iOS 我记不住的代码段

1.没有自动装箱的masonry的使用

    // 自动布局 在这之前需要想把控件添加到父控件中
    [_segmentedControl mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.top.equalTo(self.view).offset(10);
        make.right.equalTo(self.view).offset(-10);
        make.height.mas_equalTo(40);
    }];
    
    [_tableView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.right.bottom.equalTo(self.view);
        make.top.mas_equalTo(_segmentedControl.mas_bottom).offset(10);
    }];
    
    [_noMessagesView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.right.bottom.equalTo(self.view);
        make.top.mas_equalTo(_segmentedControl.mas_bottom).offset(10);
    }];

2.获取系统返回pop手势

- (void)addScreenGesture {
   // 1.获取系统自带滑动手势的target对象
   id target = self.navigationController.interactivePopGestureRecognizer.delegate;
   // 2.创建全屏滑动手势,调用系统自带手势的target的滑动方法
   UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)];
   // 3.给控制器的view添加全屏滑动手势
   [self.view addGestureRecognizer:panGesture];
}

3.忽略未使用变量警告

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-variable"
UIView *eTestView = [[UIView alloc] init];
#pragma clang diagnostic pop

4.忽略方法未声明警告

#pragma
clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
   UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]
initWithTarget:targetaction:@selector(handleNavigationTransition:)];
#pragma
clang diagnostic pop

5.忽略任意警告

warning.png

结合上面忽略警告的方式,以后你会忽略警告了吗?

忽略一个类文件的警告

Paste_Image.png

6.在APPDelegate中禁用第三方键盘

#pragma mark - 禁用第三方键盘
- (BOOL)application:(UIApplication
*)application shouldAllowExtensionPointIdentifier:(NSString
*)extensionPointIdentifier {
    return NO;
}

7.Alert提示宏定义

#define Alert(_S_, ...) [[[UIAlertView
alloc] initWithTitle:@"提示" message:[NSString stringWithFormat:(_S_), ##__VA_ARGS__]
delegate:nil cancelButtonTitle:@"知道了" otherButtonTitles:nil] show]
文/Originalee(简书作者)原文链接:http://www.jianshu.com/p/7c3ee5e67d03著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
强烈推荐大家可以看看该作者的这篇文章.

8.不使用typedef定义block的方式使用block

- (void)isIdentify:(void(^)(BOOL identify, NSError *error))finished;

9.NSDateFormatter的线程安全优化方法

static NSString *const kCurrentDateFormatter = @"currentDateFormatter";

+ (instancetype)dateFormatter {
    NSMutableDictionary *threadDict = [NSThread currentThread].threadDictionary;
    WLDateFormatter *dateFormatter = threadDict[kCurrentDateFormatter];
    
    if (!dateFormatter) {
        @synchronized (self) {
            if (!dateFormatter) {
                dateFormatter = [WLDateFormatter new];
                threadDict[kCurrentDateFormatter] = dateFormatter;
                return dateFormatter;
            }
            return dateFormatter;
        }
    }
    return dateFormatter;
    
    
    static id _instance;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _instance = [WLDateFormatter new];
    });
    
    return _instance;
}

10.字符串去掉空格

NSString *str = @"   王启镰    王俨 王迅  王朝   ";
// 去掉所有的空格
NSString *replaceStr = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
// 去掉前后的空格
NSString *characterSetStr = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

11.打印字符串地址

 strK = @"This is a String!";
 NSLog(@"strK = %p", strK);

12.设置圆角的优化

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
[self.view addSubview:view];

view.layer.cornerRadius = 8;
view.layer.masksToBounds = YES;
view.layer.shouldRasterize = YES;
view.layer.rasterizationScale = [UIScreen mainScreen].scale;

13.数字处理,尽量使用高精度的double

NSString *str = @"123456789.99";
CGFloat floatN = [str floatValue];
double doubleN = [str doubleValue];
NSLog(@"floatN = %f", floatN);
 NSLog(@"doubleN = %f", doubleN);
/* 打印结果
2016-07-13 17:22:24.673 WYTestDemo[12699:4390961]
floatN = 123456792.000000
2016-07-13 17:22:24.673 WYTestDemo[12699:4390961]
doubleN = 123456789.990000
**/

14.获取启动图的名称[项目启动后会对launchImage中的图片进行2次命名]

- (NSString *)fetchLaunchImageName
{
    NSArray* imagesDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"];
    for (NSDictionary* dict in imagesDict) {
        if(CGSizeEqualToSize(CGSizeFromString(dict[@"UILaunchImageSize"]),[UIScreen mainScreen].bounds.size))
        {
            return dict[@"UILaunchImageName"];
        }
    }
    return nil;
}

15.字符串包含iOS7.0适配

NSString *text = @"10.5%~12.25%";
// iOS 8专有API
BOOL isContainsPercent = [textcontainsString:@"%@"];
// 如果要支持iOS7 请用这个
BOOL isContain = [@"%" rangeOfString:self.text].length > 0;

16.获取UIWebView的JSContext

JSContext *context = [self.secondPage valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    context[@"sendUrl"] = ^{
        NSArray *args = [JSContext currentArguments];
        if(args.count > 0){
            WLWebController *webVC = [[WLWebController alloc] init];
            webVC.url = [NSString stringWithFormat:@"%@",args[0]];
            [self.navigationController pushViewController:webVC animated:YES];
        }
    };

17.约束优先级

约束优先级.png

Content Compression Resistance Priority,也叫内容压缩阻力优先级(小名:别挤我),该优先级越高,则越晚轮到被压缩。
Content Hugging Priority,也叫内容紧靠优先级(小名:别扯我),该优先级越高,这越晚轮到被拉伸。

18. 选中tabBar的跳转,先选中tabBar,把当前导航控制器popToRootViewController,然后用选中tabBar的导航控制器push出一个页面

// 这里的mainVC 的类型是UITabBarController
mainVC.selectedIndex = 0;
[weakSelf.navigationController popToRootViewControllerAnimated:NO];
WLBFinanceViewController
*finance = [[WLBFinanceViewController alloc] init];
finance.pageType= kFinancePageTypeStandard;
[mainVC.viewControllers[0] popToRootViewControllerAnimated:NO];
[mainVC.viewControllers[0] pushViewController:financeanimated:YES];

19.在iOS中一个汉字占3个字节

20.模拟器真机判断

#if TARGET_IPHONE_SIMULATOR //模拟器

#elif TARGET_OS_IPHONE //真机

#endif

21.使用SDWebImage保存图片到本地

[[SDImageCache sharedImageCache] storeImage:image forKey:imageUrl];

22.给UIWebView设置请求头

NSDictionary *dictionnary =@{@"UserAgent":userAgent};
 [[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];

23.获取UIWebView的UserAgent

UIWebView *tempWebView = [[UIWebView alloc]init];
NSString* userAgent = [tempWebView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];

24.NSArray和NSDictionary去除NSNull处理

static id WYJSONObjectByRemovingNullValues(id JSONObject) {
    if ([JSONObject isKindOfClass:[NSArray class]]) {
        NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:[(NSArray *)JSONObject count]];
        for (id value in (NSArray *)JSONObject) {
            [mutableArray addObject:WYJSONObjectByRemovingNullValues(value)];
        }
        
        return mutableArray.copy;
    } else if ([JSONObject isKindOfClass:[NSDictionary class]]) {
        NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionaryWithDictionary:JSONObject];
        for (id <NSCopying> key in [(NSDictionary *)JSONObject allKeys]) {
            id value = (NSDictionary *)JSONObject[key];
            if (!value || [value isEqual:[NSNull null]]) {
                [mutableDictionary removeObjectForKey:key];
            } else if ([value isKindOfClass:[NSArray class]] || [value isKindOfClass:[NSDictionary class]]) {
                mutableDictionary[key] = WYJSONObjectByRemovingNullValues(value);
            }
        }
        
        return mutableDictionary.copy;
    }
    
    return JSONObject;
}

25.Xcode中支持的模拟器所在的位置
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

26.NSNumber可以自动去掉小数点后边的0

double number = 60000.00;
NSLog(@"number = %@", @(number));
/* 打印结果
2016-08-23 17:22:13.988 NSAttributeString换行[5256:259641] number = 60000
**/
 // 特殊情况
NSString *str = @"8.54";
double number = [str doubleValue];
NSLog(@"number = %@", @(number));
/* 打印结果
**2016-08-25 18:10:57.988 ****绘制虚线****[20270:1205620] number = 8.539999999999999**
**/

27.对数字类型进行判断

int number = 2.00;
NSNumber *myNumber = @(number);
if (strcmp([myNumberobjCType], @encode(double)) == 0) {
    NSLog(@"我是double");
} else if (strcmp([myNumber objCType], @encode(int)) == 0) {
    NSLog(@"我是int");
} else if (strcmp([myNumber objCType], @encode(float)) == 0) {
    NSLog(@"我是float");
} else if (strcmp([myNumber objCType], @encode(BOOL)) == 0) {
    NSLog(@"我是BOOL");
}

28.定义和使用C语言数组

CGFloat colHeight[5];
for (int i =0; i< 5; ++i){
    colHeight[i] = i;
}

29.NSRunLoop的正确开启方式

BOOL shouldKeepRunning = YES; // global 
NSRunLoop *theRL = [NSRunLoop currentRunLoop]; 
while (shouldKeepRunning && [theRL runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]);
/** 
在需要关闭运行循环的地方设置shouldKeepRunning为No即可.
因为如果直接使用[NSRunLoop run]当移除输入源过后,不能保证运行循环能够终止.
*/

30.屏幕尺寸

1.屏幕大小
iPhone4做原型时,可以用320×480
iPhone5做原型时,可以用320×568
iPhone6做原型时,可以用375×667
iPhone6Plus原型,可以用414×736

2.屏幕分辨率
iPhone4的显示分辨率,640×960
iPhone5的显示分辨率,640×1136
iPhone6的显示分辨率,1334×750
iPhone6 Plus显示为,1920×1080

31.页面不添加标记进行一次性判断

if (objc_getAssociatedObject(self, _cmd)) {
  NSLog(@"已经加载过啦");
} else {
  objc_setAssociatedObject(self, _cmd, @"Launch", OBJC_ASSOCIATION_RETAIN);
  NSLog(@"第一次加载");
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,647评论 18 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,087评论 4 62
  • 在一起一辈子的两个人 突然有一天 一个离开另一个远去 再也不会回头 曾经总以为 所有的人都会庆幸 再也不用给他洗衣...
    若水梅香阅读 390评论 4 2
  • 2015.4.17 子集 T78.cpp https://leetcode.com/problems/subset...
    ZoeyeoZ阅读 234评论 0 1
  • 最爱杜甫的诗,不是“国破山河在”的沉郁,不是“天阴雨湿声啾啾”的凄苦。而是那首他攀登高处,俯瞰众山的“会当凌绝顶,...
    美美思呀阅读 286评论 0 1