Objective-c
1. Let Xcode's console support lldb type of printing
What's the use of this?
How to say, I think this is still more useful drops, why the use of Nikki?
Because when the Xcode breakpoint debugging, the console input PO self.view.frame or PO ID type of the time is dead.
Don't believe me? Look like:
Go to the Chase
Open Terminal Input Three command:
1. Touch ~/.lldbinit
2. Echo Display @import UIKit >> ~/.lldbinit
3. Echo Target stop-hook add-o \ "target Stop-hook disable\" >> ~/.lldbinit
Don't have any prompts after the command has been lost? Well, congratulations on your success! Then, the most critical step is that ...
Rerun the project (no need to restart Xcode), see ~ ~
It means success.
So now we continue to enter PO self.view.frame in the console
It worked! If the PO instruction is an ID type, it can also print normally. Does it feel much more convenient? Anyway, I think so. As for any use, look at personal needs. ~~!
How do I delete it?
OK, so the problem comes, I use the command to create, if you do not want to play what to do, Nikki?
In fact, very simple answer, see the first command Touch ~/.lldbinit, is to create a hidden file in the root directory . Lldbinit, and then delete this file is done.
Open terminal and then, in terminal input:? rm ~/.lldbinit command.
2. Use macro definition to detect if block is available!
#define BLOCK_EXEC (block, ...) if (block) {block (__va_args__);}; // previous usage of macro definition /* if (completionblock) { Completionblock (arg1, arg2); } */ // use after a macro definition Block_exec (Completionblock, arg1, arg2);
3. Use @ () to include C strings or non-OC objects
NSString *propertyattributesstring = class"description")));
4. Use arc and do not use arc (from Summer Summer)
// use arc and do not use arc #if __has_feature (OBJC_ARC)//compiling with arc#else// compiling Without ARC#endif
5.iOS Image Memory Optimization (blog) memory optimization experience (from gray ash)
Resolution Steps: Instrument debugging, found not to be released is all ImageIO, almost know, the way to read the map, from [UIImage imagenamed:@ "], change to Imagewithcontentsoffile, you can.
Cause: Imagenamed the way to read pictures, will be cached in memory, so the larger picture, or with Imagewithcontentsoffile.
The picture in the tip1:.xcassets cannot be read with Imagewithcontentsoffile;
Tip2:imagewithcontentsoffile read pictures need to add file suffix name such as png,jpg, etc.;
6. Print the controller hierarchy in the console
Use the PO [uiviewcontroller _printhierarchy] command in the console to print out the controller's hierarchy at a glance. Let's all go play. ~~1
7. Print the View hierarchy in the console
Use the PO [[[[UIApplication sharedapplication] keywindow] command in the console to print out the view level at a glance.
Of course, it might be confusing for some people to print all the view levels under window.
However, you can also print a hierarchy that specifies a view.
PO [view Recursivedescription]
8. print the properties and values of the object using the PO command in the console in debug mode
Add categories, plus code. Without importing the header file, you can print out the model's properties and values in the console using the PO command, which mainly uses the method of deception and replaces the description method of the system.
9. Create a single case with a macro
#define Synthesize_singleton_for_class_arc (className) \+ (className *static className *shared## ClassName =static dispatch_once_t Oncetoken; dispatch_once (&oncetoken, ^= return shared# #className;}
10. Determine if the system is greater than, less than, equal to a version
#define System_version_less_than (v) ([[[ Uidevice Currentdevice] systemversion] compare:v options:nsnumericsearch] = = nsorderedascending)#define system_version_less_than_or_equal_to (v) ([[[ Uidevice Currentdevice] Systemversion] Compare:v options:nsnumericsearch]! = nsordereddescending)#define System_version_greater_ Than_or_equal_to (v) ([[[ [Uidevice Currentdevice] systemversion] compare:v options:nsnumericsearch]! = nsorderedascending)
11. Weak references and strong reference macros
#define Strongself () __strong typeof (weakself) strongself = weakself#define weakself () __weak __typeof (&* Self) weakself = self
In a custom block, the weak reference is then strongly quoted to prevent it from being released.
weakself (); = ^(nsuinteger index, Nsuinteger seledrow) { strongself (); [Strongself.tableview reloaddata]; };
However, one thing to note is that the system block does not require a weak reference, for reasons please refer to https://www.zhihu.com/question/36358590
12. How to hide the divider line below the navigation bar
[Self.navigationController.navigationBar setbackgroundimage:[uiimage imagewithcolor:[uicolor Whitecolor] ] Forbarmetrics:uibarmetricsdefault]; New];
+ (UIImage *) Imagewithcolor: (Uicolor *) color{ cgrect rect=cgrectmake (0.0f0.0f 1.0f1.0f); Uigraphicsbeginimagecontext (rect.size); = Uigraphicsgetcurrentcontext (); Cgcontextsetfillcolorwithcolor (context, [color Cgcolor]); Cgcontextfillrect (context, rect); *theimage = uigraphicsgetimagefromcurrentimagecontext (); Uigraphicsendimagecontext (); return theimage;}
13. Monitor network status
[[Afnetworkreachabilitymanager Sharedmanager] startmonitoring]; //A single case for detecting network connections and a callback method for network changes[[Afnetworkreachabilitymanager Sharedmanager] setreachabilitystatuschangeblock:^(afnetworkreachabilitystatus status) {Ddloginfo (@"%ld", (Long) status); NSString*NetName; Switch(status) { CaseAfnetworkreachabilitystatusunknown:netname=@"Unknown"; Break; CaseAfnetworkreachabilitystatusnotreachable:netname=@"No network"; Break; CaseAfnetworkreachabilitystatusreachableviawwan:netname=@"3G"; Break; CaseAfnetworkreachabilitystatusreachableviawifi:netname=@"WiFi"; Break; default: Break; } }];
14. How to quickly set up BorderWidth, BorderColor, Cornerradius, masktobounds in Xib
. h file
#import <UIKit/UIKit.h>@interface*bx_bordercolor; @property (Nonatomic, Assign) ibinspectable cgfloat Bx_cornerradius; @property (nonatomic, assign) ibinspectable BOOL bx_masktobounds; @end
. m file
#import<objc/runtime.h>@implementationUIView (layeradditions)- (void) Setbx_bordercolor: (Uicolor *) bx_bordercolor{objc_setassociatedobject (self, @selector (bx_bordercolor), Bx_bordercolor, Objc_association_ Retain_nonatomic); Self.layer.borderColor=Bx_bordercolor.cgcolor;}-(Uicolor *) bx_bordercolor{returnObjc_getassociatedobject (self, _cmd);}- (void) Setbx_borderwidth: (cgfloat) bx_borderwidth{objc_setassociatedobject (self, @selector (bx_borderwidth), @ (bx_ borderWidth), objc_association_retain_nonatomic); Self.layer.borderWidth=bx_borderwidth;}-(cgfloat) bx_borderwidth{return[Objc_getassociatedobject (Self, _cmd) floatvalue];}- (void) Setbx_cornerradius: (cgfloat) bx_cornerradius{objc_setassociatedobject (self, @selector (Bx_cornerradius), @ (BX _cornerradius), objc_association_retain_nonatomic); Self.layer.cornerRadius=Bx_cornerradius;}-(cgfloat) bx_cornerradius{return[Objc_getassociatedobject (Self, _cmd) floatvalue];}- (void) Setbx_masktobounds: (BOOL) bx_masktobounds{objc_setassociatedobject (self, @selector (bx_masktobounds), @ (bx_ masktobounds), objc_association_retain_nonatomic); Self.layer.masksToBounds=bx_masktobounds;}-(BOOL) bx_masktobounds{return[Objc_getassociatedobject (Self, _cmd) boolvalue];}@end
Online collection and self-summarizing iOS development tips