对于一个APP开发,从零开始,分享一些经验(iOS)

2017-10-27  本文已影响12人  俺妈说昵称越长媳妇越漂亮

我是一名iOSer,写了有3,4个APP了。从零开始,先说说最底层的吧。分享给新手。新手快上车~


  1. 对于登录用户的信息,要做成单例。并且储存起来。血一般的教训~不说了,都是泪。
  2. 对于配置信息,一般也需要做成单列,储存起来。
  3. 对于视图,一定要继承写,并且封装起来,对你以后有好处的!
  4. 对于方法类,工具类,要用category来写

2017-11-16更新


1.一般iOS程序都会用到pod,在写Podfile的第三方库名称时,最好加上版本。避免你再次pod install的时候,更新到最新方法导致第三方的一些方法没有而导致项目报错
2.对于block的一些个人见解和结束循环引用的一个思想


2017-11-29更新

UITextField的值的获取

1.分享一个非常容易让人忽略的事情,偶然发现的.有的人对于UITextField的值获取,可能比较麻烦.写什么代理啊,计算,stirngappendstring之类的...

1. 现在发现了一个非常简单的方法,苹果给了一个枚举.我们先来看看.UITextField继承于UIControl
2. UIControl有一个方法
- (void)addTarget:(nullable id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
3.我们看一下UIControlEvents枚举

typedef NS_OPTIONS(NSUInteger, UIControlEvents) {
    UIControlEventTouchDown                                         = 1 <<  0,      // on all touch downs
    UIControlEventTouchDownRepeat                                   = 1 <<  1,      // on multiple touchdowns (tap count > 1)
    UIControlEventTouchDragInside                                   = 1 <<  2,
    UIControlEventTouchDragOutside                                  = 1 <<  3,
    UIControlEventTouchDragEnter                                    = 1 <<  4,
    UIControlEventTouchDragExit                                     = 1 <<  5,
    UIControlEventTouchUpInside                                     = 1 <<  6,
    UIControlEventTouchUpOutside                                    = 1 <<  7,
    UIControlEventTouchCancel                                       = 1 <<  8,

    UIControlEventValueChanged                                      = 1 << 12,     // sliders, etc.
    UIControlEventPrimaryActionTriggered NS_ENUM_AVAILABLE_IOS(9_0) = 1 << 13,     // semantic action: for buttons, etc.

    UIControlEventEditingDidBegin                                   = 1 << 16,     // UITextField
*** UIControlEventEditingChanged                                    = 1 << 17,
    UIControlEventEditingDidEnd                                     = 1 << 18,
    UIControlEventEditingDidEndOnExit                               = 1 << 19,     // 'return key' ending editing

    UIControlEventAllTouchEvents                                    = 0x00000FFF,  // for touch events
    UIControlEventAllEditingEvents                                  = 0x000F0000,  // for UITextField
    UIControlEventApplicationReserved                               = 0x0F000000,  // range available for application use
    UIControlEventSystemReserved                                    = 0xF0000000,  // range reserved for internal framework use
    UIControlEventAllEvents                                         = 0xFFFFFFFF
};
我在那个枚举前加星了.看到了没有
5.接下来我们就这样写
[phoneNumberTF addTarget:self action:@selector(phoneNumberTFValueChange:) forControlEvents:UIControlEventEditingChanged];
6.实现phoneNumberTFValueChange:方法即可

2018-5-18更新

数组的KVC的一些用法

在我们取数组值的时候,进行一些比较大小,或者求和之类的操作.可以简化为
目前只找到这些,虽然不多,也算是小技巧

如有补充,请留言!!!

NSArray * array = @[  
                    @{@"name":@"hwc",  
                      @"count":@(10),  
                      @"url":@"blog.csdn.net/hello_hwc"  
                      },  
                    @{@"name":@"baidu",  
                      @"count":@(20),  
                      @"url":@"www.baidu.com"  
                      },  
                    @{@"name":@"google",  
                      @"count":@(22),  
                      @"url":@"www.google.com"  
                      }  
                    ];  
NSArray * nameArray = [array valueForKeyPath:@"name"];  
NSNumber *sum = [array valueForKeyPath:@"@sum.count"];  
NSNumber *max = [array valueForKeyPath:@"@max.count"];  
NSNumber *min = [array valueForKeyPath:@"@min.count"];  
NSLog(@"NameArray:%@",nameArray.description);  
NSLog(@"Sum:%@",sum.description);  
NSLog(@"max:%@",max.description);  
NSLog(@"min:%@",min.description);  

2018-6-25更新

获取AFNetworking的block块内的值后 在运行block块外的代码

__block id obj = nil;
[NetManager POST:urlString parameters:para progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    CFRunLoopStop(CFRunLoopGetMain());//先运行
    obj = resuponseObject;
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    CFRunLoopStop(CFRunLoopGetMain());//先运行
    obj = error;
}];
CFRunLoopRun(); //后运行
NSLog(@"%@",[obj class]);

纯手写的....应该没有什么错误,有错误,请指出.摘自这里1楼帖子,感谢

有什么分享的下方留言。我们一起来学习进步和交流~

上一篇下一篇

猜你喜欢

热点阅读