小编Tep*_*har的帖子

将__attribute __((objc_requires_super))与协议一起使用

我有这样的事情:

@protocol MyProtocol <NSObject>

- (void)oneMethod;

@end
Run Code Online (Sandbox Code Playgroud)

.

@interface BaseClassWithProtocol : NSObject <MyProtocol>

@end
Run Code Online (Sandbox Code Playgroud)

.

@interface ChildClassWithProtocol : BaseClassWithProtocol

@end
Run Code Online (Sandbox Code Playgroud)

BaseClassWithProtocol已经实现了oneMethod,如果ChildClassWithProtocoloneMethod实现中没有调用super,我想显示警告.

但我不知道我应该在哪里写__attribute__((objc_requires_super)).

在.h中重新定义oneMethod看起来很愚蠢时,不支持在协议中编写它.

那么有什么标准方法可以解决这个问题吗?

objective-c ios

7
推荐指数
1
解决办法
317
查看次数

什么是空白在bash中实际意味着什么?

我有这样的事情:

projectName= echo $tempPBXProjFilePath | sed "s/.*\/\(.*\)\.xcodeproj.*$/\1/g";
Run Code Online (Sandbox Code Playgroud)

我想从中提取子串$tempPBXProjFilePath.这是正确的.但是,如果我这样写:

projectName=echo $tempPBXProjFilePath | sed "s/.*\/\(.*\)\.xcodeproj.*$/\1/g";
Run Code Online (Sandbox Code Playgroud)

这是错误的.区别在于变量之后的空格.

我知道变量后面没有空格.但是等号后的空白是什么意思.空白有什么特别的意义吗?

linux bash

5
推荐指数
1
解决办法
99
查看次数

什么是 ___lldb_unnamed_symbol?

我想在第三方类实例方法上设置断点。

br set -r "\[ThirdPartyClass .*\]$"
Run Code Online (Sandbox Code Playgroud)

但我得到了(没有位置)

然后我想查找这个类并发现它有什么问题。

image lookup -t ThirdPartyClass
Run Code Online (Sandbox Code Playgroud)

输出为空。事情变得很奇怪。

最后,我使用 hopper 来查找实例方法的地址偏移量,如下所示。

                     -[ThirdPartyClass aMethod:]:
00000001008f83b8         stp        x22, x21, [sp, #-0x30]!                     ; Objective C Implementation defined at 0x101098168 (instance method), DATA XREF=0x101098168
00000001008f83bc         stp        x20, x19, [sp, #0x10]
00000001008f83c0         stp        x29, x30, [sp, #0x20]
00000001008f83c4         add        x29, sp, #0x20
00000001008f83c8         mov        x19, x2
00000001008f83cc         mov        x20, x0
00000001008f83d0         adrp       x8, #0x101102000
00000001008f83d4         ldr        x1, [x8, #0xb40]
00000001008f83d8         mov        x0, x19
00000001008f83dc         bl         imp___stubs__objc_msgSend
00000001008f83e0         adrp …
Run Code Online (Sandbox Code Playgroud)

reverse-engineering objective-c ios lldb

5
推荐指数
1
解决办法
8735
查看次数

标签 统计

ios ×2

objective-c ×2

bash ×1

linux ×1

lldb ×1

reverse-engineering ×1