ContainsString if you use this syntax make sure that the right hand side is not empty

self.scrollView.mj_insetT += self.insetTDelta; TelField. KeyboardType = UIKeyboardTypePhonePad; telField.

If you use #define, it will not be corrected at compile time, it will not be saved, it will only check if the #define inside the definition is fixed to 64, but the controller starts at 0, There are two kinds of solution navigationController. NavigationBar. Translucent = NO controller is another self. Bounse to set the starting position will be based on the navigation bar under below

Kvo must be careful not to set the key of the observation, which is prone to an endless loop. If it does, then add a bool to filter out the observation calls

Be careful not to change the directory above, otherwise you will not be able to search

I think SVProgressHUD can add a level to end low levels but not high levels

Encapsulated AFNetwork with SVProgress can encapsulate a box to remind you if you need to pop up

The solution is to wait half an hour for pod Update

There is no need to call [super dealloc] in the dealloc method in ARC state.

// To distinguish between the two cell types, Or don't show it's no use / / xib [self. The tableView registerClass: [HMWCallMsgFlowCell class] forCellReuseIdentifier: kCallMsgFlowCellID]; // use xib [self.tableView registerNib:[UINib nibWithNibName:@"HMWCallMsgFlowCell" bundle:nil] forCellReuseIdentifier:kCallMsgFlowCellID];Copy the code

The difference between pop animation and CA animation is that pop animation will be blocked if the main thread is blocked, but CA animation will not

Xxx. text == xxx2.text although there will be no problem in machines above 5s, but there will be an unequal problem in machines 5 or below 5.

The GCD delay will be inaccurate by about 0.3 seconds if the time is greater than 6 seconds.

Dispatch_after (dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.12 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{}); NSTimer: [NSTimer scheduledTimerWithTimeInterval: 0.12 f target: self selector: @ the selector (delayMethod) the userInfo: nil repeats: NO];Copy the code

An array cannot add an empty object, otherwise it will collapse

A global Block can define only one code Block, and redefinition will replace the previous Block

Using a XIB to pull a control or custom view does not require initialization in the code.

In the emulator or real machine, there are black edges at the top and bottom of the screen. The solution is to set LaunchScreen as the launch page in project General and set the size of launchscreen. xib.

If view.alpha = 0, it is hidden and there is no click event

UIButton to set rounded corners cannot set its shadow because the masksToBounds solution is added to other views

If an animation with a global definition is placed in an animation group, modifying the global definition changes the entire animation

  • Development environment: the development environment is a server specially used for development by the program apes. Configuration can be more random. In order to facilitate development and debugging, it is generally open all error reports.
  • Test environment: generally a copy of the production environment configuration is cloned, a program does not work properly in the test environment, so it must not be released to the production machine.
  • Production environment: In the production environment, the system provides external services. Generally, the error report is disabled and the error log is enabled.

The three environments can also be said to be the three stages of system development: development -> test -> go live, in which the production environment is usually referred to as the real environment.

[DIC allKeys] or [DIC allValues] are unordered if an ordered dictionary is sent from the background, but the order of keys and values is the corresponding order, including the printed dictionary.

If the parent class has a method implemented in the parent class, the parent class will still use the super method, but declare the method in the parent class.h,

The SDK conflict about pod complains their Allies www.jianshu.com/p/a04a6e055…

Notice whether the notification is in the main thread, whether there are operations on the interface UI, pay attention to the thread problem

If the proxy uses assign, an exception may occur. If the proxy uses weak, it is set to nil. Weak is recommended.

As long as the App Store is not a new package or called a new version iteration, it can be put on and removed at will

Android Tencent app treasure review for an hour is OK

The reason why the version number of Apple app is not synchronized is that apple will put the package on the shelf first, but the version number is automatically updated and the version is the original version, which is more likely to have problems

If the app needs to be improved, some users will linger on the interface and will not be reminded of the update problem if they do not reopen the app.

If multiple pushes are created, set a push certificate in aurora or Umeng upload P12 file. The serial number of each certificate is different from the public key

The Xcode console prints a stream of Unicode characters

WKWebView requests that have a “+” in the body or address will be interpreted by the browser as a space character. The solution is to replace the “+” with %2B

If you don’t want the object to be destroyed after execution, then use __block to decorate the object and leave it empty when it is used up

If I have @ Weakify (Self) outside; And @ strongify (self); Blocks nested within blocks do not need to be added

Static dispatch_once_t onceToken; If onceToken = 0; When it’s empty then it resets the one-time code block.

If the wechat third-party login has not been used for 3 months, it needs to reset its key, otherwise the callback will fail.

Wechat should pay attention to whether it is the paid appkey when setting its AppKey in Umeng, or it will not be called back after payment.

Storyboards added to iOS5 are rapidly replacing XIB. However, XIBs can still be useful in some scenarios. For example, if your app needs to adapt to pre-ios5 devices, or if you have a custom reusable view, you will inevitably use them.

If you have to xiBS, keep them as simple as possible. Try to configure a separate XIB for each Controller, splitting the View hierarchy of a View Controller into a separate XIB as much as possible.

Note that when you load a XIB everything is stored in memory, including any images. If you have a view that you don’t need right away, you’re wasting precious memory. Storyboards are another story, Storyboards only instantiate a View Controller when needed.

In XIB, all images are chache, as are sound files if you’re doing OS X development. When you load an NIB that references an image or sound resource, the NIB load code writes the image and sound file to memory. In OS X, image and sound resources are cached in named cache for future use. In iOS, only image resources are stored in named Caches. Depending on your platform, use the imageNamed: method of NSImage or UIImage to get the image resource. I’ve experienced this problem a lot. Interfaces written in XIB load much slower than those written directly in code.

x ? : y? There are no operands between: and. After experimenting with a few examples, guess? The x is omitted between: so x? Y is x? x : y

If the field of the model inside the model needs to be assigned, it must first check whether the second layer model is empty, otherwise the assignment cannot be done

#define cannot be reassigned because it is processed at compile time and runs as a constant

Using SVN management, creating classes in the same file will cause an error

When the page is destroyed, the object’s observation key value should be destroyed. If it is a wrong object, the operation will jump, and the key value should not be mistaken

There are problems copying things from older versions of Excel to older versions of Excel

Empty rich text loaded with a webView will crash

App Store reviews will be suspended for five days during Apple’s Christmas holiday.

ld: 215 duplicate symbols for architecture x86_64 clang: error: linker command fa Showing Recent Messages clang: error: linker command failed with exit code 1 (use -v to see invocation) iled with exit code 1 (use -v to see invocation)

There’s something about this and I can’t find what’s wrong with it because maybe there’s some values that don’t have UIKIT_EXTERN, right

UIKIT_EXTERN NSString *const kAppversion;

When adding a view to a cell, attach the color before adding subView, otherwise it will not show

TableView. TableHeaderView height is no way to set up, so you must set the height of the custom View to set up the self. The tableView. TableHeaderView height, and height change also want to set, And setting the height to 0 won’t help. Set it to 0.01

  • (void)drawRect:(CGRect)rect{

UIView initialization does not set the rect size, so drawRect will not be called automatically. Called the first time the view is displayed. This is called automatically by the system, mainly after the loadView and viewDidLoad methods are called in UIViewController; If a subclass inherits directly from UIView, there is no need to call the super method in the drawRect method. DrawRect: the method cannot be called manually. You need to call the instance methods setNeedsDisplay or setNeedsDisplayInRect for the system to call the method automatically.

Note in concatenated strings that %@ will spell (null) if the argument is nil. To fix this, determine if the argument is null set to @””.

When resetting height or any other border using a XIB, note that the height property does not get the latest value until it is loaded. Animation also, the solution is to animate the offset with frame instead of height

If it’s a controller’s view and it’s added to another controller, it automatically ignores the height of the navigation bar,

If the URL contains Chinese characters or special characters, URLEncode is transcoded to UTF-8

When using MJRefresh, note that the dictionary key is also added to the.m of the subclass if there is an inherited model

The box that pops up when rongyun remote notification app does not enter the background and does not have sleep cannot get its custom template. Because it is the rongyun agent

On the iPhone 9 system, the following data is destroyed on the exit page, and if it is not strongly referenced, the empty data will pop out

Blog.csdn.net/deft_mkjing…

1. There are two pages. There is no problem when A pushes to B page and pop comes back normally. I in B, but the View, the View inside a searchBar [self. NavigationController. NavigationBar addSubview: self. SearBackView]; If I add it to left or rightItem, it will be automatically returned when POP is rightItem. If I add it to left or rightItem, it will be rightItem when POP is rightItem. This results in the top View of page B still alive!! (because the navigation is Shared), but the B page have been dealloc dealloc - > SortCategoryProductsViewController 5. When the searchBar animation of page A comes down or when I Push again, I will call the owner of the top View, namely page B, but B has been suspended, and this time I will directly explode 6. Do you think it's over? Oh, my god, it doesn't matter in iOS 9 or above? It's going to blow up in iOS 9 or below. AddsubView is a way to add things to the navigation bar. It is best to remove them when the page is dead. Dealloc can do a lot of things, that is, clean up some unnecessary troubleCopy the code

In iOS 9.0 or later, you can jump to a new page by calling a pop-up box such as UIAlertView

Observation objects can not be destroyed multiple times, or they will jump, and multiple destruction times will not be a problem

If the controller does not set the size, the default is the size of the screen, and 64 will overwrite other views from the controller to the starting position of the setting navigation bar. Adjust the hierarchy, otherwise other views will be overwritten and cannot be clicked

If you want to know if the name of the APP is occupied, you can create an APP through iTunes Connect and you don’t have to submit the APP

Generate push file, first open push, Xcode compiled to generate automatically

Usually, Xcode automatically manages Entitlement files, so we don’t need to set files within Xcode Project -> Code Signing -> Code Signing Entitlements deliberately.

Images must be set to standard proportions or they may not appear

For manual import of wechat messages, one is whether to add UIKit framework, another is info setting link, another is whitelist filtering, and another is “-objc-all_load” in “Other Linker Flags”.

Fir if the Wi-Fi is poor will download failure, to switch to data traffic download.

Set the header parameter request. Do not concatenate HTTP hearder parameters directly

Field Type Required Description Authorization String Specifies the signature authentication reference generated based on API_KEY and API_SECRET

[manager. RequestSerializer setValue: totalStr forHTTPHeaderField: @ “Authorization”];

IOS performance tuning – tableView optimization

www.jianshu.com/p/5182234b2…

Some of their own summary and ideas, disturb

If there is a new UDID added to the developer account, then the local description file should be cleaned up and repackaged so that the new phone can be used

– AppStore 9.1 and 9.2 for 6s models will crash, just download it from the test link

The reason for the problem of saving photos and videos is that apple added a new permission after iOS11. In the future, the permission of “privacy-photo Library Additions Usage Description” should be added to save pictures.

The textAlignment of UIButton’s titleLable cannot be adjusted, To go through the following ways and Btn contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight or titleEdgeInsets

HTTP about request parameter is added on request: to call request header of af method add [manager. RequestSerializer setValue: totalStr forHTTPHeaderField: @ “Authorization”);

As for the number network certificate, the validity period of the certificate is 1 year, and the certificate (.cer) needs to be replaced when it is about to expire. The background will issue a CRT certificate, and then open it with a key string, and then export the. Cer certificate

When uploading files created by code cloud through SVN, you must pay attention to not empty folders, otherwise uploading will fail, because the management tool above the code cloud still uses git mode, the form of empty folders cannot exist, and the SVN will automatically filter out. A files, To download the Check out project on the cloud with a membership limit, you can download it on GitLab, where there is no membership limit

When registering AppID, you cannot register on the official website. You can register on Itunes instead

Download the url in the AppStore search to the software, above the triangle to get

Open the Settings interface, as long as you have a new permission to set, jump back to the APP interface, ok? Restart or the interface will not move

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if( [[UIApplication sharedApplication]canOpenURL:url] ) {
    [[UIApplication sharedApplication]openURL:url options:@{}completionHandler:^(BOOL        success) {
    }];
}
Copy the code

Creating an App Prompts that the App name is already in use. You either change it or you have to trademark it and file a lawsuit

An individual developer account can register up to 100 UdiDs, which are disabled and cannot be deleted. But when you renew your subscription, Apple will give you a chance to delete it once (only once).

Why did you add a new UDID and repackage it, but not add it? Solution: You need to update the description file. Is the description file automatically configured by Xcode or manually configured?

When you’re doing a float operation, you have to have either a decimal point or an F in the division, otherwise you’re going to get 0;

Timer sliding will pause the problem:

Method 1:  NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(test) userInfo:nil repeats:YES]; NSTimer *timer = [NSTimer timerWithTimeInterval:2 Target :self selector:@selector(test) userInfo:nil repeats:YES]; [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];Copy the code

The difference is that the runloop will go into a different mode when scrolling and the timer will pause. To solve this problem, add the timer to NSRunLoopCommonModes as in Method 2

When setting up a background image for Button, you will find that the image displayed is not the same as the IMAGE given by the UI. The image is usually displayed as blue, because in the new iOS, the image will be automatically rendered. We just have to turn the rendering off

-(UIImage *)imageWithRenderingMode:(UIImageRenderingMode)renderingMode

IOS11 shuffling in figure abnormal beats set collView. ContentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

From www.jianshu.com/p/5f1d8a167…

Change the iOS app developer account has all the rights of the app, fees, upgrades, exemptions and so on. Blog.csdn.net/buildsettin…

There is no limit to the number of apps that can be put on the shelves

If you want to switch between screens (landscape and portrait), if you want to disable auto switching, as detailed in the AppDelegate code, nothing else works, but the problem is that when you push to another controller and then switch the screen position, So the new controller’s self.view.frame and kScreenWidth will remain unchanged and the orientation of the previous screen will remain unchanged. The solution is to set the UI in viewwillAppear and try not to use self.frame

Individual developer accounts are different from corporate developer accounts

An individual developer account is only allowed to generate 3 publishing certificates and 2 development certificates. When we use more than three MAC equipment development and application, want to apply for new certificate, if in our certificate, contains three release certificate, certificate of 2 development, can be found that can’t apply for the developer certificate and issue a certificate, usually in our certificate in the interface should be only one developer certificate, a certificate of release, it is not necessary to generate so many certificate, Certificates are usually added after they have expired. Each certificate can generate a. P12 file. This file is an encrypted file that can be used by all MAC devices as long as the password is known. Note: generally. P12 files are for others to use, this machine must have a certificate with a secret key to generate. P12 files

Confuse the principle

Because hard-coded strings are in the executable’s Mach-O global data area, they are easily searchable in the symbol table, whereas string arrays are not.

Apple conducted maintenance on April 22nd. After maintenance, I need to add my mobile phone number and agree with the agreement before I can launch the APP. However, I forgot the security prompt password of my development account, so I cannot log in to the Apple ID website to set it, nor can I set it through icloud. I heard that using Apple 9.3~10.0 phones can enable two-factor authentication and it is ok (never tried). Later, I used my MAC Icloud account to get two-factor authentication and log in to the Website of Apple ID. However, after logging in to the website, I set my mobile phone number, but it still failed. Change the region to the United States or Hong Kong can appear agreement solves the www.jianshu.com/p/716faa3f3… Edit Phone Number protocol problem this operation, personal test can solve the problem

Select automatic release without setting the certificate, just download the certificate, double click to install it

It takes about 20 minutes for Apple to build an app, and it may take 1.5 to 3 hours from the start of the review to the approval of the review. Submission is at 10 PM and approval is at 8:40 am. The customer service of Apple Technology Department 4006701855 works from 9 am to 5 am without lunch break. Otherwise you have to wait more than 40 minutes,

If forgotten account security certification, apple’s customer service there is unable to solve, need through the email form to the department to modify, email and the content of must, in accordance with the format of the email said to send, or customer service there cannot bring forward the mail to the department of personnel, even if the requirements in the mail format no matter what we, but also want to complete

IOS annotation method Daqo code block to speed up the key annotations

www.code4app.com/blog-873057…

IOS – system in the making

Obtain hardware information: IP address, gateway, battery network status, carrier, memory information, etc

The background timestamp is 13 bits, the last three bits are milliseconds, the first ten bits are equivalent to 60 * 60 * 24 * 365 * (2018.4-1970.1) 1524895474040 after the system transfer

(NSTimeInterval) = 1524895534.6251822

Solve the double to string precision problem

Double d2 = 8.3; NSString *d2Str = [NSString stringWithFormat:@"%lf", d2]; NSDecimalNumber *num1 = [NSDecimalNumber decimalNumberWithString:d2Str]; NSString *strD2 = [num1 stringValue]; NSLog(@"d2: %@", strD2);Copy the code

If runner is set to release, breakpoint debugging does not get the value of the variable

If you submit a new package on iOS, add 1 to Bulid

Download Xcode9.1 or upgrade to Xcode9.1

Post is a push message and AddobServer adds a listener. Only listeners need to be destroyed

Error: dyld: Library not the loaded: / System/Library/Frameworks/UserNotifications framework/UserNotifications

The reason is that older versions of the Xocde FrameWork are not supported on older phones

Solutions: Under the target of the Build Phases TAB, find the Link Binary With Libraries, find UserNotifications inside. The framework, the status the Required revision as Optional, And then run again

GCD timer must be set to a global object, otherwise it will be released and cannot be called

To really delete SVN file to do this (replace pictures ok don’t delete) www.jianshu.com/p/9ff1fbca8…

[XXX valueForKey:@”retainCount”];

If you add UIButton to UIImageView, the button will not be clicked, and the solution is to set userInteractionEnabled = YES/NO on UIImageView object depending on whether the button is on top or below, So down here THE UIImageVIew selects NO and if the button selects YES on top to pass the event along, the button will trigger the click event

Cursory custom View, the button on the View loses the click event

If the value is an integer, the units digit is rounded off. If the value is an integer, the unit digit is rounded off

The best amount type is long, in fractions, and ➗100.0 when converted to money

 NSURL *taobaoUrl = [NSURL URLWithString:@"taobao://"];
[[UIApplication sharedApplication] canOpenURL:taobaoUrl]  
Copy the code

This is used to determine whether taobao can be opened, but sometimes this does not work because taobao is not added to the info.plist file

XXX. Morixxx file will be lost when pressing the package. It is necessary to reinstall the description file, remove the p12 file secret key released inside the key, and reinstall the P12 file

Call removeFromSuperView on empty object will collapse AppIcon size @2x and @3x in order size 20pt: 40x40, 60x60 29pt: 58 x 58, 87 x 87 40pt:80 x 80, 120 x 120 60pt:120 x 120, 180 x 180 1024 x 1024 The startup page sizes are in order 1125 x 2436 1242 x 2208 750 x 1334 640 x 960 640 x 1136Copy the code

Urgent developer.apple.com//contact/ap app…

App copyright ©️ Jianjie Luo

A property declared in a protocol is the method to implement it. A property declared in a class is automatically given the set and GET methods

App updates are deleted, including NSUserDefaults, plist writes, etc., but keychain saves are not deleted

WkwebView cannot save cookies, because the page jump does not carry cookies, we need to manually add

If you want to enter your plist file, just control+ Enter, and then copy it in

If you renew your account within one year, it will be displayed in the device management on the development website, and you can reset the UDID of your account. Once it is added or reset, it cannot be reset again. If you need to reset your account, you can only call Apple Technologies, but it can only be changed once or twice a year

To get the location, you need to add the coreLocation. framework library

In general, the version number of the emulator is the same as the latest version of Xcode. If you want to test the old system version, you may need to download and install the old system version to add the iPhone model of the old version to the emulator

Underlying development is more about security

Note that NSUserDefault stores immutable data. Even if you store NSMutableArray in NSUserDefault, it will still be an NSArray type when read. NSCoding protocol is required for archiving custom objects (converting them to NSData types). Note that NSUserDefaults write data from the cache to disk regularly, not immediately. In order to prevent data loss caused by program exit after writing NSUserDefaults, You can use synchronize to force data to be written to a disk immediately after writing:

When overriding a loadView method, do not call a method of the parent class. Including dealloc

NSArgumentDomain www.jianshu.com/p/be95cc4a2…

App update and delete NSUserDefault and some other saved data will be deleted, but with Keychains even delete app this inside things will not disappear, generally used to save token

The SDWebimage cache is based on the URL, but if the replaced image content is still displayed as the downloaded image before, the frame of Android will judge the hash and will not update the new image because the image content is replaced

NSUserDefault cannot store mutable arrays and mutable dictionaries

#pragma clang diagnostic #pragma clang diagnostic ignored "-warc-performselector -leaks" [(id) CLS performSelector:sel withObject:scheme]; #pragma clang diagnostic popCopy the code
All objects except NSString Block should be declared Strong Weak and then you create the local object AddSubView and then you point to it, which is wrong. Because your pointer is only kept by AddSubView, if you Remove it at any time your property is nil. Be sure to use Assgin for basic data types and Weak proxies for XIB attributes, as well as Weak reference objects.Copy the code

Po [self.view. Window recursiveDescription] recursiveDescription this is a recursive function that gets all the children of this object recursiveDescription] toString]

The GCD understand www.cocoachina.com/ios/2016103…

Block, delegate, notify the matters needing attention www.cnblogs.com/northWolves…

If you specify the type of the array, the objects of the array can be called directly

@property (strong , nonatomic) NSMutableArray <CYButton*>*btnArr; self.btnArr[j++].frame = rect; rect.origin.x += rect.size.width; Modify the rect property after the rect assignment, or modify the value of the assigned objectCopy the code

I think it says char *c; c = a; char *c = a; Declaring variables allocates memory and assigning values does not allocate memory

Encryption encrypts with public key and decrypts with private key; A signature is a private key signature and a public key check signature

NSString *string1 = @"/Library/preferenceLoader/preferences/Jfsm/xxx.png"; With equal nsstrings * string2 = @ "/ Library/preferenceLoader" "/ preferences/" "Jfsm/XXX. PNG "; With equal to # define JFFile (path) @ "/ Library/preferenceLoader/preferences/Jfsm/" # path;Copy the code

Dictionaries that add empty values crash

The main difference between the project blue folder and the project yellow folder (group) is that you do not participate in the compilation of the group and do not actually create a folder file. The files in this folder will be scattered in the project root directory and the files in the blue folder cannot be directly referenced. (Generally put resources, such as HTML, CSS, JS)

Finish the animation may override the child control with the following code to solve

/ / * child controls on top, or layer will cover * / [self bringSubviewToFront: self. CategoryImageView];Copy the code

There are two ways for Ios web HTML to load local resources (JS, CSS, images, etc.)

NSString *imagePath2 = [[NSBundle mainBundle] pathForResource:@"home_play_icon@2x" ofType:@" PNG "]; htmlStr1 = [htmlStr1 stringByReplacingOccurrencesOfString:string3 withString:[NSString stringWithFormat:@"file:///%@",imagePath2]];Copy the code

The second type of Html, https:// link content is directly the resource name

[_webView loadHTMLString:htmlStr1 baseURL:[[NSBundle mainBundle] bundleURL]];
Copy the code

If rename failed, rename to clean

How do I empty a custom static object? I tried to empty it, but it didn’t work

The. A file cannot be used directly, or at least has. H files. The. Framework file can be used directly, because it contains h files and other files

Unsubmitted apps cannot be deleted

JHChainableAnimations: a new way to write animations that you would like to see all around

ICarousel rotation selection of picture animation, like Meituan movies, but a little more animation

NSObjCRuntime, NSZone, and NSObject errors were reported when the declaration in the PCH file was referenced by.mm

IOS10.3 allows App ICONS to change while running

Make sure to specify main as the entry point. If you don’t specify main, the window’s rooTV won’t show up

The Cell starts with a width of 320 and a height of 44

If the Tableview simply updates its height, the following method does not call the create cell, only updates its height

[self.tableView beginUpdates];
[self.tableView endUpdates];
Copy the code

The package that was just built disappeared after being sent for a while (it would be emailed to the mailbox), probably because the permissions in info.plist were not given, some third parties need permissions on camera and album, both of which need to be given.

Setting a frame on the controller’s view will fire the viewDidLoad method before setting the frame assignment

#define XM_SAFE_BLOCK(BlockName,...) ({! BlockName ? nil : BlockName(__VA_ARGS__); }) XMRequest *request = [XMRequest request]; XM_SAFE_BLOCK(configBlock, request);Copy the code

So if you want to internationalize the content of your app it’s called string and the file name must be infoplist.string otherwise it won’t work and if you want to internationalize the content of your app, String file must be “Localizable. Strings” otherwise NSLocalizedString(@”TTRemindTitleInfo”, nil) can’t get it, if your strings file name is not Localizable but custom, Such as wang. The strings, so you have to use NSLocalizedStringFromTable () to read the localized string

WKWebview is apple to support the latest Webkit function, wechat iOS client will be upgraded to WKWebview kernel

Therefore, for ReactiveCocoa, it is no exaggeration to say that the only bottleneck preventing its performance is your imagination.

[Link] iOS In-app Purchase/In-App Purchase (1)

Blog.csdn.net/shenjie1234…

Background tax information is also needed, of course

AppStore creates downloadable charging apps

www.jianshu.com/p/d7ad393b0…

I would like to ask you if this tool is useful. It has not been maintained for 3 years. Can it still be used now? Github.com/Polidea/ios…

1. AFNetworking parsing uses NSJSONSerialization native parsing. When we have json data from server S: 3.0 Android: 3.0 IOS: 2.999999 because iOS defaults to double (NSNumber), the solution is 3.0 using strings or NSInteger. Another problem is that Json parsing fails because Json data is fragmented and cannot be parsed.

The solution: In AFURLResponseSeriailzation. The inside of the m – (instancetype) serizlizer method sets the NSJSONReadingOptions to acceptable fragmentation parsing NSJSONReadingAllowFragments | 0 (the so-called fragmentation refers to the “{}” is not a dictionary begins with “[]” at the beginning of a string array)

OC code into Swift code website — “black technology objectivec2swift.com/#/converter…

IP addresses are classified into Intranet and extranet IP addresses. If the device is connected to a Wi-Fi network, the IP address may be a LAN starting with 192

The delegate is cheap to run. Blocks are expensive. The delegate just holds a pointer to an object, calls it back, and it doesn’t cost anything. When a block goes off the stack, it copies the data it’s using from stack memory to heap memory, and of course it counts objects, and then it’s used up or the block sets nil.

The solution is to put the UUID in Kechain

To add custom classes or attributes to the Framework, use the Runtime’s associated object

NSTimer is added to the main runloop. The mode is NSDefaultRunLoopMode. Main is responsible for all main thread events, such as UI operations and complex operations, so that the timer will block in the same runloop.

The solution, the [[NSRunLoop currentRunLoop] addTimer: self. The timer forMode: NSRunLoopCommonModes];

Info.plist error and libstdc++.6.0.9 juejin.cn/post/684490…

Modify the navigation bar color self. NavigationController. NavigationBar. BackgroundColor = [UIColor blueColor]; self.navigationController.navigationBar.barTintColor = [UIColor blueColor];

TextView content does not start at the top, and it cannot be rolled up, which is really a very frustrating situation, changing the frame, changing the constraint, it does not work. It turns out that when you have a navigation controller, by default the first added scrollView or its subclass view is moved down 64 pixels. The bottom textView was added first, so its content is moved down, while the top one is not. The solution is to add the following code in controller self. AutomaticallyAdjustsScrollViewInsets = NO.

IOS8 come out, to replace the UISearchBar + UISearchDisplayController combinations, project useful to search function, then try to use the UISearchController, Add the search box to the tableHeaderView of the tableView. But when click on the search box to search, a search box was flying off to the outside of the cloud nine, solve the following self. DefinesPresentationContext = YES;

View.layer. cornerRadius = view.frame.size. Height / 2;

Enterprise-level apps or Inhouse, not apps in the AppStore channel need to be trusted by the phone and the user needs to set up a generic description file to add trust

IOS9 needs to whitelist the URL scheme that you want to call externally in order to jump

[tableView reloadData] Invalid A row of cells has been changed but cannot be refreshed. The feeling is that this method conflicts with some new feature, and that the reloadData operation is delayed until the next RunLoop execution and finally fails.

The solution is to comment [tableView reloadData], use local refresh, the problem was solved. [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];

This is because the estimateRowHeight attribute is not used in the project after the update.

/ / can be banned by the if (@ the available (iOS 11.0, *)) {UITableView. Appearance. EstimatedRowHeight = 0; UITableView.appearance.estimatedSectionFooterHeight = 0; UITableView.appearance.estimatedSectionHeaderHeight = 0; }Copy the code

IOS8 call camera warning: error code: Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting or snapshot after screen updates.

IOS8 one more style UIModalPresentationOverCurrentContext, IOS8 presentViewController in please set controller modalPresentationStyle to UIModalPresentationOverCurrentContext, problem solvingCopy the code

Error: The frame of the parent view is CGZero

Get the current class name [NSStringstringWithUTF8String: object_getClassName (self)];

When adding an existing project to a project, the project cannot be browsed, i.e. there is only one project file in the project. Cause: Found that an open project has added the existing project solution: close the open project, then you can add normally, and browse the file