美文网首页
2020-12-07(5)自己_2

2020-12-07(5)自己_2

作者: 想在月球上弹琴的孩子 | 来源:发表于2020-12-09 09:00 被阅读0次

    11:安全处理

    建议在定义NSArray和NSDictionary时使用类型标注,可以保证程序的安全性:

    @property (nonatomic, strong) NSArray <GJRVipPayTypeModel *> *payTypesArr;

    复制代码

    向代理或block发送消息时需要判断其是否实现该方法

    if ([self.delegate respondsToSelector:@selector(signUpViewControllerDidPressSignUpButton:)])

    {

        [self.delegate signUpViewControllerDidPressSignUpButton:self];

    }

    if(self.finishBlock)

    {

        self.finishBlock();

    }

    block weakself strongself --不一定每个都需要,写一个dealloc判断一下【每个类都写,避免内存泄漏】

    12:私有变量

    推荐以 _ 开头,写在 .m 文件中。例如 NSString * _somePrivateVariable

    13: int a = 1;

        NSCAssert(a == 2, @"a must equal to 2"); //第一个参数是条件,如果第一个参数不满足条件,就会记录并打印后面的字符串

    14:工程基本样式 【自己14】

    15:注释

    对于类的注释写在当前类文件的顶部

    对于属性的注释需要写在属性后面的地方。 //**<userId*/

    对于 .h 文件中方法的注释,一律按快捷键 command+option+/。三个快捷键解决。按需在旁边对方法进行说明解释、返回值、参数的说明和解释

    对于 .m 文件中的方法的注释,在方法的旁边添加 //。

    注释符和注释内容需要间隔一个空格。 例如: // fetch goods list

    16:

    配置文件同样也分两种,分为开发(Development)和发布(Distribution),配置文件(Provisioning Profiles)中包含了证书、App ID、设备(Devices),后缀名为.mobileprovision。

    它在开发者账号体系中扮演着配置和验证的角色,是--真机调试和--打包上架必须的文件。

    17:代理相关的

    #import <UIKit/UIKit.h>

    NS_ASSUME_NONNULL_BEGIN

    @protocol TestViewDelegate <NSObject>

    - (void)iKnowButtClick;

    @end

    @interface TestView : UIView

    @property (nonatomic, weak) id<TestViewDelegate> delegate;

    @end

    // TestView.m

    - (void)buttClick{

        //if ([self.delegate respondsToSelector:@selector(iKnowButtClick)]) {

            [self.delegate iKnowButtClick];//代理类中 方法会被调用

        //}

    }

    17:block

    #import <UIKit/UIKit.h>

    //typedef定义一下block,为了更好用

    typedef void(^MyBlock)(NSString *string);

    @interface MyFirstViewController : UIViewController

    @property (nonatomic, copy) MyBlock block;

    @end

    - (IBAction)buttonBAction {

        [self dismissViewControllerAnimated:YES completion:^{

        }];

          self.block(_myTextfielf.text);

    }

    //关键demo:

    - (IBAction)buttonAction { 

        MyFirstViewController *myVC = [[MyFirstViewController alloc] init];

        [self presentViewController:myVC animated:YES completion:^{   

        }];

        __weak typeof(self) weakSelf = self;//防止循环引用

    //用属性定义的注意:这里属性是不会自动补全的,方法就会自动补全

        [myVC setBlock:^(NSString *string){

            weakSelf.labelA.text = string;

        }];

    }

    :::::谁定义block,就会向调用者返回值

    18:xdealloc 每个类都要调用dealloc 防止内存泄漏

    19:[NSObject cancelPreviousPerformRequestsWithTarget:self];

      [NSObject cancelPreviousPerformRequestsWithTarget:self] 取消所有延迟方法的调用。

    20:CocoaPods是iOS平台当前最流行的包管理工具,可以将它理解为一个可以自动部署到项目的组件池,而对应的podfile文件就相当于请求组件的Request。当组件下载到工程后,cocoaPods会自动完成组件集成到现有项目的工作,并完成修改.xcodeproj文件和创建.xcworkspace文件。最终将所有组件统一打包成Pods.framework静态库,供项目使用。

    相关文章

      网友评论

          本文标题:2020-12-07(5)自己_2

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