iOS object-c self关键字总结

在Objective-C中,self 关键字是一个指向当前对象的指针。它是对象自身实例的别名,通常在对象内部的方法中使用,以提供一个指向当前对象的引用。使用 self 可以帮助你访问对象的属性和方法,特别是在处理消息传递和方法调用时。

以下是 self 关键字的一些常见用途:

  1. 访问对象的属性:

    objective-c 复制代码
    - (void)setSomeProperty:(NSString *)newValue {
        self.someProperty = newValue;
    }
  2. 在方法内部调用其他方法:

    objective-c 复制代码
    - (void)doSomething {
        [self doSomethingElse];
    }
  3. 在初始化方法中:

    objective-c 复制代码
    - (instancetype)init {
        self = [super init];
        if (self) {
            // 初始化代码
        }
        return self;
    }
  4. 在dealloc方法中:

    objective-c 复制代码
    - (void)dealloc {
        // 清理代码,例如释放对象持有的其他对象
        [self release];
    }
  5. 在block中使用:

    objective-c 复制代码
    __block __weak typeof(self) weakSelf = self;
    void (^myBlock)(void) = ^{
        [weakSelf doSomething];
    };
  6. 在代理和回调中:

    objective-c 复制代码
    id<Delegate> delegate = self;
  7. 在响应链中:

    objective-c 复制代码
    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
        [[self delegate] alertView:alertView clickedButtonAtIndex:buttonIndex];
    }

使用 self 可以提高代码的可读性,特别是当你需要明确指出是在操作当前对象时。此外,当在一个对象的方法内部使用 self 时,它也有助于避免潜在的编译器警告,尤其是在涉及对象初始化的情况下。

需要注意的是,在block中使用 self 时,应该使用 __block 或 __weak 修饰符来避免强引用循环(retain cycle)。__block 用于在block内部修改变量的值,而 __weak 用于防止block捕获对象的强引用,从而避免内存泄漏。

相关推荐
爱读书的小胖7 小时前
Codewars:Rot13(C)解题分析
c语言·开发语言
茶底世界之下8 小时前
林间步道要不要加暗角?用 Awaking 把强度收在20%
前端·ios·图片资源
season_zhu8 小时前
Skills For Real Engineers 系列之一:先配好项目,再让 ask-matt 帮我选技能
ios·openai·ai编程
Code_Solitude8 小时前
c语言:关于qsoet函数知识点
c语言·数据结构·算法
鸽鸽程序猿9 小时前
【项目】【在线判题系统】c端:竞赛报名
c语言·开发语言
H.莓飛9 小时前
【Linux】自主 Shell
linux·运维·服务器·c语言·开发语言·visual studio
爱读书的小胖10 小时前
Codewars:Last digit of a large number(C)解题分析
c语言·开发语言·r语言
疯狂敲代码的老刘10 小时前
d2r-mobile:3.2千星开源暗黑破坏神2 iOS兼容层,3天冲上GitHub日榜
ios·github
想做小南娘,发现自己是女生喵11 小时前
第二周学习文档 Linux C 文件操作
linux·c语言·学习
Bluetooth73011 小时前
c语言变量的存储类别
c语言