美文网首页
对于一个APP开发,从零开始,分享一些经验(iOS)

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

作者: 俺妈说昵称越长媳妇越漂亮 | 来源:发表于2017-10-27 11:15 被阅读12次

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


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

    2017-11-16更新


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

    • 循环引用的形成


      3BA38CE5-6531-4EC6-8B83-5A5F86A08C71.png
    • 接触循环引用思想


      0115669F-DA6B-430D-B978-B2BA9ABDCC81.png

    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楼帖子,感谢

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

    相关文章

      网友评论

          本文标题:对于一个APP开发,从零开始,分享一些经验(iOS)

          本文链接:https://www.haomeiwen.com/subject/itsrpxtx.html