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捕获对象的强引用,从而避免内存泄漏。

相关推荐
QuantumLeap丶11 分钟前
《uni-app跨平台开发完全指南》- 07 - 数据绑定与事件处理
vue.js·ios·uni-app
ajassi20001 小时前
开源 Objective-C IOS 应用开发(五)iOS操作(action)和输出口(Outlet)
ios·开源·objective-c
速易达网络4 小时前
C语言常见推理题
java·c语言·算法
沪漂的码农4 小时前
C语言队列与链表结合应用完整指南
c语言·链表
2501_915909064 小时前
Flutter 应用怎么加固,多工具组合的工程化实战(Flutter 加固/Dart 混淆/IPA 成品加固/Ipa Guard + CI)
android·flutter·ios·ci/cd·小程序·uni-app·iphone
小龙报5 小时前
《算法通关指南:算法基础篇 --- 一维前缀和 — 1. 【模板】一维前缀和,2.最大子段和》
c语言·数据结构·c++·算法·职场和发展·创业创新·visual studio
R6bandito_5 小时前
STM32 HAL库原子操作编译问题解决指南
c语言·ide·经验分享·stm32·单片机·嵌入式硬件·mcu
树在风中摇曳6 小时前
LeetCode 1658 | 将 x 减到 0 的最小操作数(C语言滑动窗口解法)
c语言·算法·leetcode
denggun123456 小时前
ios包体积管理方案
ios·iphone
Digitally6 小时前
解决 iPhone 和 Mac 之间备忘录无法同步的9种方法
macos·ios·iphone