考虑到你有这样的代码:
doSomething() // this method may throw a checked a exception
//do some assignements calculations
doAnotherThing() //this method may also throw the same type of checked exception
//more calls to methods and calculations, all throwing the same kind of exceptions.
Run Code Online (Sandbox Code Playgroud)
现在我知道,实际上在构造异常时会出现性能损失,特别是展开堆栈.我还阅读了几篇文章,指出在输入try/catch块时会有轻微的性能损失,但这些文章似乎都没有结论.
我的问题是,是否建议将try catch中的行保持最小?,即只在try子句中包含可以实际抛出正在捕获的异常的行.try子句中的代码运行速度较慢或导致性能下降吗?
但考虑到这一点,更重要的是最佳实践/更易读的解决方案:
try {
doSomething() // this method may throw a checked a exception
//do some assignements calculations
doAnotherThing() //this method may also throw the same type of checked exception
//more calls to methods and calculations, all throwing …Run Code Online (Sandbox Code Playgroud) 我刚读完了一些cocos2d文档,据我所知,要在图层中添加背景图像,你必须做以下事情:
Sprite * bg = [Sprite spriteWithFile:@"Background.png"];
[layer addChild:bg z:0];
Run Code Online (Sandbox Code Playgroud)
尽管我的测试结果是你可以直接将精灵添加到场景中,如下所示:
@implementation IntroScene
- (id) init {
self = [super init];
if (self != nil) {
Sprite * bg = [Sprite spriteWithFile:@"Background.png"];
[bg setPosition:ccp(240, 160)];
[self addChild:bg z:0];
[self addChild:[MenuLayer node] z:1];
}
return self;
Run Code Online (Sandbox Code Playgroud)
}
这两个选项之间的区别是什么,以及为图层设置背景的更好方法是什么?任何帮助将不胜感激.
我知道我需要写:
[delegate respondsToSelector:@selector(myMethod:)]
Run Code Online (Sandbox Code Playgroud)
但是编译器抱怨respontsToSelector不是协议中的一个方法,这是正确的,但是我看到很多示例代码都使用了这个,你是怎么做到的?
我只是想知道让java autobox说一个整数有什么区别:
Integer myInteger = 3; // This will call Integer.valueOf()
Run Code Online (Sandbox Code Playgroud)
或者你的代码是
Integer myInteger = Integer.valueOf(3);
Run Code Online (Sandbox Code Playgroud)
这有什么微优化吗?我知道第二个更明确,但它也更不必要打字,除此之外有什么区别吗?
我在这里用eclipse中的这个findbugs警告有点困惑.
public class MyClass {
public static String myString;
}
public class AnotherClass {
public void doSomething() {
MyClass.myString = "something";
}
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个findbugs警告"从实例方法写入静态字段",但这并没有给我一个警告:
public class MyClass {
public static String myString;
}
public class AnotherClass {
public void doSomething() {
doAnotherThing();
}
public static doAnotherThing() {
MyClass.myString = "something";
}
}
Run Code Online (Sandbox Code Playgroud)
这有什么不同?,为什么从实例方法写入静态变量是一种不好的做法?我认为它与同步有关,但我仍然不清楚.
我知道这看起来变量应该是final,但我从属性文件加载值.
我最近在我的应用程序中集成了Google + API,这是一件轻而易举的事,我唯一的问题是,所有内容都要求您离开应用程序然后返回(它使用URL方案).这不是我想要的行为,有没有办法直接调用他们的服务,并像LinkedIn API一样做任何我想要的响应?
我真的想避免在safari和我的app之间来回走动.任何建议/文件表示赞赏.
谢谢,
奥斯卡
我一直在阅读文档但是我并不是立即清楚如何使用CGPath绘制多边形.我需要做的就是在这样的事情周围绘制CGPath:
__
\ \
\ \
\__\
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供一个如何做到这一点的片段?
另外我假设CGPathContainsPoint将帮助我确定一个点是否在这样的路径中?或者路径是否必须是一个实体图
另外我怎么能移动cgpath?这就像在cgrect中更改像原点一样容易吗?
谢谢.
-Oscar
我在这里已经阅读了这个问题:为方法参数赋值是否有问题?.但是,我不清楚是否做了类似的事情:
public void myMethod(Object obj) {
doSomething(obj);
obj = getNewObj();
}
Run Code Online (Sandbox Code Playgroud)
要么:
public void anotherMethod(Object obj) {
obj = doSomething(obj):
}
Run Code Online (Sandbox Code Playgroud)
这基本上只是为了避免声明一个新的局部变量,这值得吗?,这被视为一种不好的做法吗?
我只是在查看List接口中定义的方法:
以正确的顺序返回包含此列表中所有元素的数组; 返回数组的运行时类型是指定数组的运行时类型.如果列表适合指定的数组,则返回其中.否则,将使用指定数组的运行时类型和此列表的大小分配新数组.如果列表适合指定的数组,并且空间足够(即,数组的元素多于列表),则紧跟集合结尾的数组中的元素将设置为null.仅当调用者知道列表不包含任何null元素时,这在确定列表长度时很有用.
Run Code Online (Sandbox Code Playgroud)<T> T[] toArray(T[] a);
而我只是想知道为什么它以这种方式实现,基本上如果你传递一个长度为<listTeize()的数组,它只会创建一个新的并返回它.因此,在方法参数中创建新的Array对象是没用的.
另外,如果你使用列表的大小传递一个足够长的数组,如果返回与对象相同的对象 - 返回它真的没有意义,因为它是同一个对象但是为了清晰起见.
问题是我认为这会促使代码效率稍低,在我看来,Array应该只是接收类并只返回带有内容的新数组.
有没有理由说它没有这样编码?
我已经用目标C和Cocoa框架开发了很长一段时间了.然而,我仍然不是绝对清楚的,我什么时候应该将对象引用设置为nil.我知道建议在释放具有委托的对象之前这样做,并且您还应该在viewDidUnload方法中对保留的子视图执行此操作.但究竟何时应该这样做,为什么?它究竟完成了什么?先感谢您.
-Oscar
iphone ×5
java ×5
performance ×2
autoboxing ×1
cgpath ×1
delegates ×1
draw ×1
generics ×1
google-plus ×1
instance ×1
layer ×1
list ×1
methods ×1
null ×1
object ×1
objective-c ×1
parameters ×1
polygon ×1
readability ×1
release ×1
scene ×1
selector ×1
static ×1
toarray ×1
try-catch ×1