小编Tim*_*Tim的帖子

iPhone,正在使用isKindOfClass以任何方式被认为是不好的做法?

例如,如果存在'handle all'类型方法...

if ([obj isKindOfClass:class1]) {
    // ...
} else if ([obj isKindOfClass:class2]) {
    // etc..
Run Code Online (Sandbox Code Playgroud)

这是不好的做法吗?是否有更简洁的替代方案或更好的方法来构建代码?

运行时,可读性,可维护性或任何东西都有缺点吗?

cocoa cocoa-touch objective-c

6
推荐指数
1
解决办法
3640
查看次数

将表导出为CSV,逗号不是换行符

我有一个功能f[a].我运行它Table来生成一个巨大的值列表,以便以后在C程序中用作查找表.我想将其导出为CSV,这样我就可以将其复制/粘贴到我的代码编辑器中并快速将其转换为C数组(我只需要将它包装成花括号并给它起一个名字):

Export["myfile.csv", Table[ f[a], {a, 0, 6} ], "CSV" ];
Run Code Online (Sandbox Code Playgroud)

我想要的是这个:

0, 1, 2, 3, 4, 5, 6
Run Code Online (Sandbox Code Playgroud)

等等,但我最终得到了这个:

0
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)

每个条目都在一个新行上.我错过了什么简单明了的事情?

谢谢!

wolfram-mathematica

6
推荐指数
2
解决办法
2855
查看次数

调试应用程序崩溃iOS模拟器和XCode 4在main()函数中停止,而不是崩溃源

可能重复:
Xcode 4.2显示错误的错误代码行

Xcode 4的调试器似乎没有在iOS模拟器中崩溃的原因附近停止执行.假设我在我的代码中引入了一个错误,可能是一个数组越界错误,如下所示:

NSMutableArray * test = [[NSMutableArray alloc] initWithCapacity:5];
[test insertObject:@"Hello" atIndex:10];
Run Code Online (Sandbox Code Playgroud)

当应用程序不可避免地崩溃时,我在调用堆栈中没有任何内容("按线程"视图)进入main函数,main.m以帮助我找出问题所在.

是否有我在构建属性中缺少的调试设置?这是Snow Leopard上的Xcode 4.2,如果有帮助的话.

谢谢

xcode objective-c ios-simulator

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

如何在Xcode 4中的IB中以图形方式添加自定义UIControl子类?

我想在我的iOS 5应用程序中使用Matthijs Hollemans的MHRotaryKnob控件.我在Xcode 4.2中使用故事板.MHRotaryKnob实现为.的子类UIControl.

我无法复制他提供的示例,因此无法将控件添加到我的应用程序视图中.在该示例中,他的XIB包含一个视图,其中MHRotaryKnob添加了一个实例作为自定义控件.它加载并运行正常但我在Xcode中看不到为我自己做这件事.我已经尝试添加各种UIControl子类并在Identity Inspector中更改它们的类,但Xcode不断更改它们.

有任何想法吗?

谢谢

xcode ios

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

如何防止UIBarButtonItem使用自定义属性更改大小

我的iPad应用程序顶部的UIToolbar中有一个UIBarButtonItem(iOS 5.1.)我在Interface Builder中将其宽度设置为65.它具有'边界'和标识符'自定义'的风格.按下时文本标签和色调会发生变化:

    [btnA setTitle:@"State A"];
    [btnA setTintColor:[UIColor STATE_A_COL];
Run Code Online (Sandbox Code Playgroud)

等等,采用各种标签和颜色.这工作正常,按钮没有调整大小,即使各州的标题长度差异很大.

然后我在启动时添加了此代码来设置字体:

UIFont * futura = [UIFont fontWithName:@"Futura" size:13];
NSDictionary *attributes = [NSDictionary dictionaryWithObject:futura
                                                       forKey:UITextAttributeFont];
[btnA setTitleTextAttributes:attributes forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)

现在,按钮的大小适合启动时的标题宽度.随着标题的改变,它会改变大小.我该如何锁定尺寸?我不明白这里的相互作用; 我以为我所做的就是更改标题字体属性,而不是关于按钮的任何其他内容.

我也尝试过显式设置width属性:

[btnA setWidth:65.0];
Run Code Online (Sandbox Code Playgroud)

再无济于事.

cocoa-touch ios ios5

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

快速等效于STK中引用的DSP的sin()

我正在使用Perry Cook的Synthesis Toolkit(STK)来生成锯齿和方波.STK包括这个基于BLIT的锯齿振荡器:

inline STKFloat BlitSaw::tick( void ) {
  StkFloat tmp, denominator = sin( phase_ );
  if ( fabs(denominator) <= std::numeric_limits<StkFloat>::epsilon() )
      tmp = a_;
  else {
      tmp = sin( m_ * phase_ );
      tmp /= p_ * denominator;
  }

  tmp += state_ - C2_;
  state_ = tmp * 0.995;

  phase_ += rate_;
  if ( phase_ >= PI ) 
     phase_ -= PI;

  lastFrame_[0] = tmp;
     return lastFrame_[0];
}
Run Code Online (Sandbox Code Playgroud)

方波振荡器大致相似.在顶部,有这样的评论:

// A fully  optimized version of this code would replace the …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm math signal-processing

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

这是使iPad应用程序全屏的正确方法吗?

我想在iOS中禁用状态栏以使我的应用程序全屏显示.我管理但我不确定我做得对.

这是我做的:

  1. 在IB中,将状态栏的模拟度量标准设置为无
  2. 在Info.plist中添加了一个条目 UIStatusBarHidden = YES
  3. 在IB中移动我的视图,以便填满屏幕.

我没有使用OpenGL或类似的东西,它只是一个简单的Cocoa Touch应用程序,与其他类似类型的应用程序一样,可以访问屏幕上的每个像素.

令我感到羞耻的是,我从其中一个无所不在的"教程"中得到了一种技术,就像我床下的尘土兔子一样乱扔垃圾.它是在2009年.我应该使用更现代,批准的技术吗?

如果它有助于我只针对iOS 5.

xcode ios

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

使用Protocols和@synthesize中的属性作为协议实现的快捷方式

假设我创建了一个类和这样的协议:

@protocol MyProtocol
@required
- (void) doSomething;
@end

@interface MyClass id<MyProtocol>
@property int aNumber;
@end

@implementation MyClass
@synthesize aNumber = aNumber_;
- (void) doSomething { aNumber_++; }
@end
Run Code Online (Sandbox Code Playgroud)

我可以通过将它们视为id<MyProtocol>s 来传递MyClass的实例.我不能访问aNumber,如果我正在处理声明的事情id<MyProtocol>.这是预期的.

我最近需要这样做.我想继续使用协议来引用我的类的实例(确定运行时),但我也想访问类属性.我发现我可以这样做:

@protocol MyProtocol
@required
- (void) doSomething;
- (int) aNumber;
@end
Run Code Online (Sandbox Code Playgroud)

现在我有一个id<MyProtocol>我也可以调用的实例[instance aNumber],无需直接编写访问器 - synthesise调用有效地为我实现了协议的这一部分.如果我愿意,我也可以添加setter.

我偶然发现了一个故意的特征,或者这是一个坏主意,最终会让我遇到问题?

谢谢

objective-c

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