问题标签 [initwithcoder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
15468 浏览

iphone - 你什么时候在 iPhone 上使用 encodeWithCoder: 和 initWithCoder: ?

正如我在上述主题中的问题所述,您通常必须满足哪些要求才能说“好的,我需要encodeWithCoder:为此initWithCoder:实例化”?通常您可以将对象状态写入NSUserDefaults,所以我很好奇您的专家何时决定使用一个与另一个?

0 投票
3 回答
30941 浏览

objective-c - Objective C - 自定义视图和实现 init 方法?

我有一个自定义视图,我希望能够in-codenib.

编写initWithFrameinitWithCoder方法的正确方法是什么?它们都共享一个用于某些初始化的代码块。

0 投票
3 回答
4755 浏览

interface-builder - 带有 OpenGL 3.2 核心的 NSOpenGLView

如果这个问题是微不足道的或无意义的,我提前道歉......这是我正在开发的第一个应用程序之一。(不幸的是)我不是开发人员。

我有一个 NSWindow,其中包含一个自定义视图,它是NSOpenGLView.

由于NSWindowNSOpenGLView是通过 Interface Builder 创建的,因此我init既不需要NSOpenGLContext也不需要NSOpenGLPixelFormat.

我最近切换到 OS X Lion,现在我想利用新的 OpenGL 3.2。

从 Apple 文档中,我发现要启用 OpenGL 3.2,我只需要编写如下内容:

在初始化NSOpenGLContext.

这很容易(即使对我来说也是如此),但我怎么能在我的应用程序中实现它,因为我从来没有init NSOpenGLContext

由于NSOpenGLView是从 Interface Builder 创建的,因此-initWithFormat:shareContext:不会调用该方法。

因此,我尝试使用以下内容覆盖该-initWithCoder:方法:

并且 OpenGL 3.2 已按照报告正确加载,glGetString(GL_VERSION)但创建的上下文不再与应用程序交互...视图中没有绘制任何内容..

我尝试了我所知道的一切......但我无法解决这个问题。

我应该怎么做呢?

0 投票
1 回答
950 浏览

iphone - 使用 NSCoder 初始化静态单例对象

我正在开发一个 iPhone 应用程序,但我的共享单例课程遇到了一些麻烦。我使用共享单例来存储两个变量 int gameRunsint totalScore 每次用户加载应用程序时,“gamRuns”都会增加,“totalScore”很明显:D

问题如下,当应用程序使用此代码加载时,我使用自己的方法加载单例和初始化:

这很好用,因为我可以从任何其他类中引用这个类,并且总是获得指向同一个对象的指针,所以这在其他对象中也可以正常工作:

现在我添加了 NSCoder 协议,并添加了两个方法initWithCoderencodeWithCoder如下所示:

现在,当应用程序加载时,我检查我们是否已经保存了状态,如果存在,我只是用该文件解压缩类,如果没有,我使用上面的自定义方法初始化该类,然后设置其默认值,编码它到文件,所以我们有一个保存的状态,这里的代码:

现在 if 语句中的最后一行运行良好,每次我按预期加载应用程序时它都会增加,我感到非常高兴哈哈。

但是,当我尝试通过执行以下操作在另一个类中获取单例的引用时,就会出现问题:

它总是倒数到 1,我知道会发生什么,但我不知道解决它的最佳方法是什么,当我initWithCoder是单例时,它不会返回静态对象,它会创建一个新对象,当我初始化 my 时sharedLevelStateInstance,它会调用我的第一个自定义方法,将其初始化为硬编码的默认值。

所以 StackOverflow,你能帮帮我吗?!

我只需要知道什么是获得对同一对象的引用的最佳方法,而无需每次都分配一个新对象initWithCoder

谢谢 :)

0 投票
1 回答
932 浏览

objective-c - 需要帮助使用单例实现 initWithCoder 和 NSUNarchiver

我无法弄清楚如何让存档在 iOS 5 应用程序中工作。我有一个单例 SessionStore,如果它在初始化时存在,我想检索它。SessionStore 继承自 NSObject 并有一个 ivar,一个 NSMutableArray *allSessions,我想从 plist 文件中加载它。这是 SessionStore.m 不确定问题是否明显或者您是否需要更多信息......谢谢!弥敦道

在 AppDelegate.m 中,它在终止时保存 plist 文件:

0 投票
4 回答
1509 浏览

ios - NSCoding 和保存/加载默认值问题

我正在为 iPhone 应用程序编写一些代码,但在正确加载默认数据时遇到问题。我的代码基于 Ray Wenderlich 的“Learning Cocos2d”一书中的一些示例。

似乎即使当我彻底删除应用程序并尝试从新数据开始时,应用程序也不一致地不尝试加载数据,或者错误地认为有数据并加载 null。

我正在使用 containsValueForKey 检查值是否存在,然后加载它或加载一些默认值,但即使在全新安装时, containsValueForKey 也会找到数据并且不加载默认值。在 xcode 的管理器中,我检查了我设备的文件结构和我指定保存的 Documents 文件夹,它看起来不包含任何文件,所以我不确定它在抓取什么。

我的猜测是问题与 initWithCoder 函数有关。它有时似乎神秘地通过了该功能,但并非一直如此。另一个奇怪的事情是,[[GameManager sharedGameManager] save]当玩家获得高分时我会调用(此处未显示,但代码与此objectiveList 完全相同,只是一个int)并且它似乎正确保存了它。

现在代码:

GC数据库.h

GC数据库.m

游戏管理器.h

GameManager.m(我添加了加载功能,试图强制它加载,但它似乎不起作用)

0 投票
1 回答
350 浏览

ios - 在initWithCoder中没有调用drawLayer?

我正在尝试复制具有某些属性的 UIView。UIView 覆盖了 drawLayer: 方法来绘制自定义形状。

我正在使用 NSKeyedArchiver、粘贴板和 NSKeyedUnarchiver 来取回属性。创建了一个 UIView 实例并设置了属性 - 到目前为止一切都很好。

在 drawlayer 方法中创建了一些属性,它们具有默认值,而不是复制的值。我的问题是,当调用 initWithCoder 并创建实例时,不调用 drawRect 或 drawLayer 吗?为什么?

0 投票
1 回答
156 浏览

xcode - 是否可以将 cpp 模型对象转换为 NSData

我正在尝试将模型对象传递给我创建的本地服务器。模型对象是一个 cpp 类。我需要将其转换为数据,以便可以将其写入流中。当我尝试使用 Coder 方法归档类时,给了我一个错误。

有没有更好的方法来做到这一点?对此的任何帮助或见解,我们将不胜感激。

谢谢...

0 投票
1 回答
5973 浏览

objective-c - 为什么 initWithCoder 不能正确初始化项目?

我有一个UITableViewCell. 我的子类包含几个UILabels。我希望我的子类将这些标签初始化为适用于我的每个表格视图单元格的一些默认设置。

我读到我应该initWithCoder为此使用。我的initWithCoder函数正在被调用,我可以单步执行函数中的每一行,它似乎正在执行动作。但是,当我运行我的应用程序时,我看不到任何正在应用的属性。最明显的是,字体没有改变。我只是认为我在UILabels 上修改的任何属性实际上都没有被保存或显示。

我将此子类与Storyboard. 我知道我的更改不会反映在 上Storyboard,但是当应用程序运行时它们也不会反映 - 尽管我的代码正在执行。

编辑:我想提一下,在尝试覆盖之前initWithCoder,我在这些子类中有一个实例方法,我将在其中运行此逻辑。我只需在cellForRowAtIndexPath. 这个方法是有效的,但我认为让这个子类中的这个逻辑自动发生会很方便。

有任何想法吗?我的代码如下:

和标题:

0 投票
1 回答
683 浏览

ios - iOS 上的 initwithCoder 和 encodewithCoder

我试图UIButton通过使用来保存 a 的状态encodeWithCoder:

我的initWithCoder:样子是这样的:

我保存了button1颜色、方向、角度等的状态。我可以用它来恢复它,initwithCoder;但是当我点击按钮时它没有响应。外观已恢复,但IBAction不再调用。