小编Mar*_*aev的帖子

如何调用super.super的方法?

我想调用一个超类的超类方法,而不会破坏继承链.像这样的东西:

+(id) alloc 
{
    return [super.super alloc];
}
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?

不要混淆这里superclass讨论的方法提供的行为.


UPD:

几句话supersuperclass差异.

让我们说,我们有AClassSuperAClass.从他们的名字AClass继承如下SuperAClass.他们每个人都有一个方法的实现-(void) foo;

AClass实现的一个下列类别方法:

超类:

+(id) alloc {
    return [[self superclass] alloc];
}
Run Code Online (Sandbox Code Playgroud)

超级:

+(id) alloc {
    return [super alloc];
}
Run Code Online (Sandbox Code Playgroud)

现在,假设这两行代码:

AClass *AClassInstance = [AClass alloc];
[AClassInstance foo];
Run Code Online (Sandbox Code Playgroud)

在第一种情况下(使用超类),SuperAClassfoo方法将被调用.用于(使用超)第二种情况下,AClassfoo方法将被调用.

cocoa cocoa-touch objective-c ios

27
推荐指数
1
解决办法
1万
查看次数

Xcode项目管理:单引擎 - 不同的个性化应用程序

我的想法是我有一个应该为不同客户定制的应用程序模板.主要目标是提供具有几乎相同功能的多个个性化应用程序.

Xcode项目组织(也许是管理层)的最佳方法是什么,以便为每个客户的应用程序实现以下几点:

  1. 始终为视觉元素设置不同的图像(用于控件,视图,图标等);
  2. 用于小型UI结构修改的XIB文件很少;
  3. 可视化自定义 - 代码级别;
  4. 小功能修改;
  5. 可以切换回以前的个性化版本;
  6. 一个功能引擎(例如搜索功能);

目前,对于每个个性化请求,我在同一项目的根目录中创建新项目文件,以及相应的XIB文件,图像集源文件(对于某些功能请求)目录.每个项目文件都有对主源文件目录(引擎)的引用.

但我认为这不是组织此类项目的最佳方式.

iphone xcode objective-c ios

9
推荐指数
2
解决办法
856
查看次数

实例变量的类别扩展

有没有办法以某种方式模拟一个类的类别行为关于它的实例变量,而不是方法?

我有一个ClassA,我希望在用新方法和其他cllass(ClassB)的ivars扩展它之后保留它的名字.当然,我可以继承ClassA,但结果类会有不同的名称.

对于方法添加,这不是问题 - 类别将是一个很好的解决方案.

UPDATE: ClassA用作XIB的文件所有者,这些要扩展的字段是IBOutlets.所以我在构建阶段需要它们.

iphone objective-c ios

5
推荐指数
2
解决办法
1102
查看次数

是否有可能从Objective-C获得中间C代码?

正如我所理解的那样,除了Objective-C语言是"干净"C的严格超集之外,添加的OOP范例是通过Objective-C Runtime Reference中部分描述的一组函数来模拟的.

因此,我希望有可能以某种方式在中间C/C++文件中编译Objective-C代码(可能有一些asm插入).

一般可能吗?

c c++ runtime objective-c

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

使用具有相同方法名称的类别扩展类

我想使用类NSArray + Populate.h扩展一个类:

@interface NSArray (Populate)
-(NSArray *) populateArray; 
@end
Run Code Online (Sandbox Code Playgroud)

如果有另一个类别(来自另一个模块或库),使用具有相同名称的方法扩展NSArray,如何检测情况?

例如,如果有NSArray + Fill.h:

@interface NSArray (Fill)
-(NSArray *) populateArray; 
@end
Run Code Online (Sandbox Code Playgroud)

据我了解,运行时引擎会默默地选择其中一个版本,而不会发生任何崩溃?

iphone objective-c ios

3
推荐指数
1
解决办法
1212
查看次数

@protocol vs Class Cluster

什么是那些主要的禁忌用于@protocol类集群在Objective-C概念?

它们都在程序架构中引入了松散耦合.它们在概念上几乎是平等的,还是还有其他值得知道的东西?

cocoa cocoa-touch objective-c ios

3
推荐指数
1
解决办法
1611
查看次数

为声明的属性合成了什么等效代码?

在自动合成后,getter和setter方法的主体是什么样的?

从官方文档到目前为止我发现只推荐了实现技术,但是没有关于编译器在合成过程中使用哪些文件的说法:http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/ mmAccessorMethods.html#// apple_ref/DOC/UID/TP40003539-SW5

一些技术推荐包含autorelease消息的实现,这对于多线程编程来说并不十分安全.我只是想知道自动生成的代码是否跟随一些提议的实现.


例如:

.H

@interface AClass: NSObject{}
    @property (nonatomic, retain) AnotherClass *aProp;
@end
Run Code Online (Sandbox Code Playgroud)

.M

@implementation AClass
    @synthesize aProp

-(id) init {
    if ((self = [super init])) {
        self.aProp = [[AnotherClass alloc] init];    // setter invocation
    }
    return self;
}

-(AnotherClass *) aMethod {
    return self.aProp;     // getter invocation
}
@end
Run Code Online (Sandbox Code Playgroud)

什么是aProp编译器生成的等效访问者代码片段?

-(AnotherClass *) aProp {
    // getter body
}

-(void) setAProp: (AnotherClass *) {
    // setter body
}
Run Code Online (Sandbox Code Playgroud)

gcc memory-management objective-c

3
推荐指数
1
解决办法
1988
查看次数

标签 统计

objective-c ×7

ios ×5

iphone ×3

cocoa ×2

cocoa-touch ×2

c ×1

c++ ×1

gcc ×1

memory-management ×1

runtime ×1

xcode ×1