在 Obj C 内部的 for 循环中的协议,就像在 Java 中的 for 循环中的接口一样
Protocol inside for loop for inside Obj C, just like interface inside for loop inside Java
我正在尝试在 Objective C 中做类似的事情,我这里有这个 Java 代码:
public interface Subscriber {
Object register();
void unregister();
}
public void registerDefaultSubscribers() {
mDefaultEventSubscribers.clear;
mDefaultEventSubscribers.addAll(createDefaultSubscribers());
for (Subscriber subscriber : mDefaultEventSubscribers)
registerSubscriber(subscriber);
}
这就是我在 Objective-C
时考虑的做法
@protocol Subscriber <NSObject>
- (NSObject *)register;
- (void)unregister;
@end
# pragma registerSubscribers
- (void)registerDefaultSubscribers {
[_defaultNotificationSubscribers removeAllObjects];
[_defaultNotificationSubscribers addObjectsFromArray:[self createDefaultSubscribers]];
for (id<CLNotificationSubscriber> subscriber in _defaultNotificationSubscribers) {
[self registerSubscriber:subscriber];
}
}
这看起来正确吗,我在 Objective C 中执行此操作的方式有任何问题吗?
A.
- (NSObject *)register;
Objective-C 动态输入。因此,如果您没有所有 return 值的公共基础 class,则使用 id
而不是 NSObject
。 NSObject
是一个可能的基础 class,而不是所有对象的基础 class。
- (id)register;
也许您想为类型添加协议。
B.
(void)registerDefaultSubscribers
{
[_defaultNotificationSubscribers removeAllObjects];
[_defaultNotificationSubscribers addObjectsFromArray:[self createDefaultSubscribers]];
…
}
假设 _defaultNotificationSubscribers
是一个(可变)数组,我不知道为什么要更改现有实例而不是创建新实例。为什么不使用 setter 和 getter 来启用 KVO?
除此之外,"create" 听起来像是一种创建方法,return 是一个成功标志。我会称之为 -defaultSubscribers
。它们是否被创建是一个实现细节:
(void)registerDefaultSubscribers
{
self.defaultNotificationSubscribers = [self defaultSubscribers];
…
}
我正在尝试在 Objective C 中做类似的事情,我这里有这个 Java 代码:
public interface Subscriber {
Object register();
void unregister();
}
public void registerDefaultSubscribers() {
mDefaultEventSubscribers.clear;
mDefaultEventSubscribers.addAll(createDefaultSubscribers());
for (Subscriber subscriber : mDefaultEventSubscribers)
registerSubscriber(subscriber);
}
这就是我在 Objective-C
时考虑的做法@protocol Subscriber <NSObject>
- (NSObject *)register;
- (void)unregister;
@end
# pragma registerSubscribers
- (void)registerDefaultSubscribers {
[_defaultNotificationSubscribers removeAllObjects];
[_defaultNotificationSubscribers addObjectsFromArray:[self createDefaultSubscribers]];
for (id<CLNotificationSubscriber> subscriber in _defaultNotificationSubscribers) {
[self registerSubscriber:subscriber];
}
}
这看起来正确吗,我在 Objective C 中执行此操作的方式有任何问题吗?
A.
- (NSObject *)register;
Objective-C 动态输入。因此,如果您没有所有 return 值的公共基础 class,则使用 id
而不是 NSObject
。 NSObject
是一个可能的基础 class,而不是所有对象的基础 class。
- (id)register;
也许您想为类型添加协议。
B.
(void)registerDefaultSubscribers
{
[_defaultNotificationSubscribers removeAllObjects];
[_defaultNotificationSubscribers addObjectsFromArray:[self createDefaultSubscribers]];
…
}
假设 _defaultNotificationSubscribers
是一个(可变)数组,我不知道为什么要更改现有实例而不是创建新实例。为什么不使用 setter 和 getter 来启用 KVO?
除此之外,"create" 听起来像是一种创建方法,return 是一个成功标志。我会称之为 -defaultSubscribers
。它们是否被创建是一个实现细节:
(void)registerDefaultSubscribers
{
self.defaultNotificationSubscribers = [self defaultSubscribers];
…
}