我是iOS和Objective-C以及整个MVC范例的新手,我坚持以下内容:
我有一个视图作为数据输入表单,我想让用户选择多个产品.产品列在另一个带有a的视图中,UITableViewController我启用了多个选择.
我的问题是,如何将数据从一个视图传输到另一个视图?我将UITableView在数组中保留选择,但是如何将其传递回上一个数据输入表单视图,以便在提交表单时将其与其他数据一起保存到Core Data?
我已经四处浏览并看到一些人在app delegate中声明了一个数组.我读了一些关于单身人士的事情,但不明白这些是什么,我读了一些关于创建数据模型的内容.
执行此操作的正确方法是什么?我将如何进行此操作?
model-view-controller objective-c uiviewcontroller ios swift
在Xcode 4.2中使用自动引用计数(ARC)时,如何转换(或创建)编译和行为正确的单例类?
是否有一种简单的方法允许与位于另一个UIView下的UIView中的按钮进行交互 - 在按钮顶部没有来自顶部UIView的实际对象?
例如,目前我有一个UIView(A),顶部有一个对象,屏幕底部有一个对象,中间没有任何东西.它位于另一个UIView的顶部,中间有按钮(B).但是,我似乎无法与B中间的按钮进行交互.
我可以看到B中的按钮 - 我已经将A的背景设置为clearColor - 但是B中的按钮似乎没有接收到触摸,尽管实际上在这些按钮的顶部没有来自A的对象.
编辑 - 我仍然希望能够与顶级UIView中的对象进行交互
当然有一种简单的方法可以做到这一点?
我在网上找到了一些信息来创建一个使用GCD的单例类.这很酷,因为它的线程安全,开销很低.遗憾的是,我找不到完整的解决方案,只能找到sharedInstance方法的片段.所以我使用试错法制作了自己的课 - 而且瞧瞧 - 以下内容出来了:
@implementation MySingleton
// MARK: -
// MARK: Singleton Pattern using GCD
+ (id)allocWithZone:(NSZone *)zone { return [[self sharedInstance] retain]; }
- (id)copyWithZone:(NSZone *)zone { return self; }
- (id)autorelease { return self; }
- (oneway void)release { /* Singletons can't be released */ }
- (void)dealloc { [super dealloc]; /* should never be called */ }
- (id)retain { return self; }
- (NSUInteger)retainCount { return NSUIntegerMax; /* That's soooo non-zero */ }
+ (MySingleton …Run Code Online (Sandbox Code Playgroud) 我的应用程序是一个标签栏应用程序,每个标签都有一个单独的视图控制器.
我的第一个视图控制器(A)中有一个对象,其中包含我存储的所有应用程序数据(请忽略NSUserDefaults),当我按下按钮时,第二个视图控制器(B)需要访问该数据.我怎样才能以最好的方式实现这一目标?
除了标准[[MyClass alloc] init]模式,一些对象是由静态方法构建的MyClass *obj = [MyClass classWithString:@"blabla"]
根据广泛的内存管理指南(包括Apple的),您只负责释放您的对象alloc.
有人能为我提供这种方法的模板吗?你如何返回分配的对象([self alloc]; return self;也许)?你如何确保它将被释放?
我在Obj-C中阅读了一些关于单身人士的惊人资源:
但是这些资源都没有明确地解决init方法概念,而且仍然是Obj-C的新手我很困惑应该如何实现它.
到目前为止,我知道init在Obj-C中不能使用私有,因为它不提供真正的私有方法......所以用户可以调用[[MyClass alloc] init]而不是使用我的[MyClass sharedInstance].
我还有什么其他选择?我相信我也应该处理我的单例的子类化方案.
我一直想知道在什么情况下在objective-C中采用单例模式是非常必要的(例如,定义一个专用类并创建一个单独的实例),使用类作为对象是不行的.
特别是,我正在考虑以下解决方案:
static变量(文件范围全局变量),而不是单例实例的实例变量;例如,而不是一个Texture类(模型对象)和一个TextureManager单(资源管理器),你可以有作为类的方法和相同的静态变量实现的所有纹理制作/清除Texture类(工厂模式加上一些资源管理).
有关这个设计的任何想法?
编辑:
现在我想到了它,仍然在Texture上面的例子中,即使我将这两个类分开(Texture和TextureManager)我必须在A之间做出选择.让经理成为单身人士,并使用实例方法或B.让经理成为无实体的辅助类.澄清:
Texture* myTexture = [[TextureManager defaultManager] textureWithName:@"TextureName"];
// (singleton, client uses instance methods)
Run Code Online (Sandbox Code Playgroud)
与
Texture* myTexture = [TextureManager textureWithName:@"TextureName"];
// (Class standing in for singleton, client uses class methods)
Run Code Online (Sandbox Code Playgroud)
后者看起来更直接,不那么繁琐/冗长,但我想知道哪种设计"更正确".当然,前者允许TextureManager出现不止一个实例(不是在我的情况下).
objective-c ×9
singleton ×5
ios ×4
iphone ×3
class-method ×1
cocoa-touch ×1
delegates ×1
factory ×1
initializer ×1
swift ×1