我正在研究iPhone的多视图应用程序,目前我的视图(VIEW)设置和转换(CONTROLLER?)工作得很好.现在我想为实际的程序数据(MODEL)添加对象.
我的问题是:我应该如何构建我的数据以遵守模型视图控制器(MVC)设计模式?我知道我应该创建单独的类来实现我的数据结构,并且我的控制器类可以从视图中将消息传递给它们,但是我应该检查其他任何组织注意事项吗?特别是Cocoa Touch,Xcode或iOS特有的那些?
其他细节:播放预先录制的音频和用户生成的音频也是必不可少的.我知道这些是模型元素,但它们与"V"和"C"的确切关系我仍然有点模糊.我想当用户操作需要音频播放时,CONTROLLER应该将消息传递给MODEL以准备好适当的声音,但是应该在哪里确切地调节播放?在一个与我想象的ViewController分开的"PlayerController"中?
非常感谢和赦免我的MVC noobery.
model-view-controller xcode cocoa-touch project-organization ios
我想创建一个Objective-C基类,它在运行时对所有属性(不同类型)执行操作.由于不会总是知道属性的名称和类型,我该怎么做这样的事情呢?
@implementation SomeBaseClass
- (NSString *)checkAllProperties
{
for (property in properties) {
// Perform a check on the property
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:这在自定义- (NSString *)description:覆盖中特别有用.
有没有人对构建两个给定DFA的并集算法有直截了当的描述?例如,假设我们有两个DFA超过{0,1}
{w|w has an odd number of characters}
w has states A and B
delta | 0 | 1
----------------
A | B | B
----------------
B | A | A
{x|x has an even number of 1s}
x has states a and b
delta | 0 | 1
----------------
a | a | b
----------------
b | b | a
Run Code Online (Sandbox Code Playgroud)
我有一个结果转换表显示联合:
delta | 0 | 1
----------------
Aa | Ba | Bb
----------------
Ab | Bb | Ba
---------------- …Run Code Online (Sandbox Code Playgroud) 有人可以解释如何控制iOS应用程序中的执行流程吗?我知道UIApplicationMain首先从main调用.那又怎样?我定义的方法和主要方法之间有什么关系?这一切都是事件驱动的还是有一些结构化的序列?
我不是故意这么模糊,我只需要知道从哪里开始.也许我是以错误的方式看待这个.
例如,在C++中我会做类似的事情:
#include "myMethods.h"
int main (int argc, char * const argv[]) {
Method1(); // Initialization
Method2(); // Opening views and options
Method3(); // Meat of the program
return 0;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我在创建一个新的视图控制器时收到以下消息.一切都在Xcode中编译没有错误,但应用程序在从RootViewController加载新视图时立即退出.
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "HomeView" nib but the view outlet was not set.'
Run Code Online (Sandbox Code Playgroud)
为解决此问题,我尝试将文件所有者连接到视图,但文件所有者甚至无法使用视图插件.
我正在编写一堆通用但相关的函数供不同的对象使用.我想对这些函数进行分组,但我不确定是否应该将它们放在一个类或简单的平面库文件中.
像类一样对待它们似乎并不正确,因为没有一种对象可以使用它们,并且包含所有这些函数的类可能不一定具有任何属性.
将它们视为平面库文件似乎过于简单,因为缺少更好的单词.
这是什么最好的做法?
Flurry docs建议startSession拨打电话applicationDidFinishLaunching:.
这有两个问题......
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
[FlurryAnalytics startSession:@"AWESOMEAPIKEY"];
// ...
}
Run Code Online (Sandbox Code Playgroud)
1)不是application:didFinishLaunchingWithOptions:新批准的发射点吗?
2)这只在启动时调用一次,但是每次用户打开或切换回应用程序时我们不想要会话信息吗?或者Flurry通过听某些事件或自己处理所有这些事情NSNotification?
是不是一个更好的地方把startSession电话放进去,applicationDidBecomeActive:或者applicationWillEnterForeground:像这样?
- (void)applicationDidEnterBackground:(UIApplication *)application
{
// ... Flurry AppCircle setup
[FlurryAnalytics startSession:@"AWESOMEAPIKEY"];
// ... your setup
}
Run Code Online (Sandbox Code Playgroud) 我最近设置了应用ID和配置文件,并且能够在设备上成功测试我的应用.然后我下载了一些示例iOS XCode项目,并在部署其中一个项目并从手机中删除示例应用程序后,无法将手机与iTunes同步或在Xcode管理器窗口中看到它已连接(该设备仍然列在左侧窗格,但显示为已断开连接).当我尝试在设备上构建和运行时,现在在Xcode中创建的所有新项目都会收到以下消息.
No provisioned iOS device is connected.
Run Code Online (Sandbox Code Playgroud)
我正在运行Xcode 3.2.5和iOS 4.2.
有任何想法吗?
非常感谢.
TRiViAL,我知道,但是在坚持camelCase惯例时,iDevice名称中是否存在"i"的约定,作为更长标识符的一部分?Apple是否有任何方法名称或标识符作为示例?
someIPadMethod 与 someiPadMethod
这在很大程度上是一个语法问题.如何设置UIButton操作选择器来调用不同类的方法?我已经完成了类的#import,我需要使用按钮调用它的方法,我对按钮代码的外观有以下部分理解:
UIButton *btnSplash = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btnSplash.frame = CGRectMake(250, 270, 180, 30);
[btnSplash setTitle:@"Menu" forState:UIControlStateNormal];
[btnSplash addTarget:self action:@selector([CLASS METHOD:PARAMETER]) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:btnSplash];
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
预期':'在'''之前
@selector中缺少方法名称
我在参考库中看到的示例代码调用了本地方法,所以我试图概括并且我的尝试迄今为止都没有用.
谢谢
cocoa-touch ×5
ios ×4
iphone ×4
objective-c ×4
cocoa ×2
control-flow ×1
dfa ×1
execution ×1
flurry ×1
libraries ×1
namespaces ×1
nsobject ×1
oop ×1
php ×1
sequence ×1
sync ×1
transition ×1
uibutton ×1
union ×1
xcode ×1