小编Bri*_*acy的帖子

返回-application的类型:didFinishLaunchingWithOptions:

在为iOS开发时,您应用的第一个入口点就是-[AppDelegate application:didFinishLaunchingWithOptions:].此方法的返回类型是a BOOL.默认情况下,此方法的返回类型为YES.这是Xcode自动生成的代码.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,Xcode为您输入return语句,值为YES.当我将return语句的值更改为NO,并且不更改任何其他内容时,没有任何反应.该应用程序不会退出或显示任何异常行为.这就引出了一个问题,当返回的值无关紧要时,返回BOOL的方法的目的是什么?如果返回的值无关紧要,为什么方法不返回void?
注意:改变回报之后我的一些期望NO

  • 应用程序无法启动,因为它没有收到"权限"(NO已退回)
  • 编译器生成警告,或者在运行时引发错误.
    为什么这些事情都不会发生呢?

objective-c ios

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

协议在哪里进行

在新的Xcode 6 beta中,我试图制作一个Objective-C protocol.令我沮丧的是,当我点击"创建新文件"时,protocol我们都知道并喜爱以前的Xcodes 的模板已经消失了.

在此输入图像描述

我彻底搜索了整个"创建文件"菜单但无济于事.有没有人知道protocol模板的位置,或者我是否必须从头开始制作一个空.h文件?

感谢您的时间.

beta xcode protocols

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

其他语言是否使用Foo,Bar这样的东西; 垃圾邮件,鸡蛋

在Java,Javascript,C,C++,C#等语言中,我看到的代码类似于教程和代码片段中的代码.

int foo = 5;
int bar = 10;
baz(foo, bar);
Run Code Online (Sandbox Code Playgroud)

我假设这些用于快速变量名称,当命名约定不需要遵循时,例如快速片段,但它们已经变得如此受欢迎,它们似乎是语言的一部分.例如,python已交易foobarfor spameggs.

spam = 'spam'
eggs = 'eggs'
spam_and_eggs(spam, eggs)
Run Code Online (Sandbox Code Playgroud)

当我看到这些变量名时,我立即想到了python而没有其他语言.其他语言是否有签名占位符变量名称,如python?

language-agnostic variables coding-style

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

为什么c ++禁止隐式转换void*?

在C中,我们可以转换void*为任何其他指针.

但是C++禁止它.

int *a = malloc(4);
Run Code Online (Sandbox Code Playgroud)

导致此错误:

invalid conversion from ‘void*’ to ‘int*’ [-fpermissive]
Run Code Online (Sandbox Code Playgroud)

c ++中有潜在的危险吗?

有没有c ++的例子?

c c++

7
推荐指数
2
解决办法
1569
查看次数

什么是CGVector?

在搜索文档后,我仍然无法找到合理的解释CGVector.文档中提到的唯一一次是它何时显示它typedef是什么.

struct CGVector {
   CGFloat dx;
   CGFloat dy;
};
typedef struct CGVector CGVector;
Run Code Online (Sandbox Code Playgroud)

从基本几何学我知道这dx意味着delta x,或x的变化.同样的道理dy.有了这些知识,CGVector从编程的角度来看,什么是(或任何一种矢量)?如果它有帮助,我试图在SpriteKit SKPhysicsBody和速度的上下文中理解一个向量.

objective-c vector-graphics sprite-kit

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

UITextView的指定初始化程序

当我UITextView在Xcode 6 Beta中创建一个新的子类时,会自动提供以下代码.

import UIKit

class TerminalView: UITextView {

    init(frame: CGRect) {
        super.init(frame: frame)
        // Initialization code
    }
}
Run Code Online (Sandbox Code Playgroud)

以前的代码(完全由Xcode提供,没有删除)会产生以下错误.

Must call a designated initializer of the superclass 'UITextView'

据我所知,在指定的子类UIView-initWithFrame:(或斯威夫特,init(frame:)如果是这样的话,为什么不通过Xcode中导致错误提供的代码?我已经添加任何新的实例变量的类,所以什么否则必须初始化.

xcode initializer uitextview swift

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

为什么可以在循环中声明复制objective-C对象,但不能按顺序声明?

我只是在学习Objective-C,我想知道为什么以下代码会导致错误?

Person *p = [[Person alloc] init];
Person *p = [[Person alloc] init];
Run Code Online (Sandbox Code Playgroud)

在这种情况下,第二行给出一个错误,指出已经定义了"p"指针.

这对我来说很有意义; 但是,如果无法重新定义指针,那么为什么以下代码有效?

for(int i = 0; i<10; i+=1) {
    Person *p = [[Person alloc] init];
}
Run Code Online (Sandbox Code Playgroud)

当我在XCode中输入它时,它不会给出任何错误,它编译并运行得很好.在这种情况下,我希望循环只是重新定义"p"指针,类似于顺序声明它们,但事实并非如此.

有没有人解释为什么会这样?

xcode scope objective-c

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

HTTP 丢包

在一家视频会议公司实习时,有很多关于丢包的讨论。维基百科声明如下:

丢包通常是由网络拥塞引起的。

我知道因为视频需要通过网络发送如此大量的数据,所以数据包必然会丢失。

我不明白的是为什么在其他情况下(例如 HTTP 请求和 AJAX 调用)没有出现丢包的情况。如果丢包真的是网络拥塞造成的,为什么我自己的HTTP请求从来没有遇到过?

HTTP 连接是否不会丢失数据包,或者我发送的请求太小而不会受到影响。如果 HTTP 对丢包免疫,为什么会这样?

sockets networking http packet packet-loss

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

如果我使用ARC,-didReceiveMemoryWarning是否有用?

当我UIViewController在Xcode中创建一个新的子类时,它带有默认方法,如initviewDidLoad.最后一个是didReceiveMemoryWarning.这让我想到,如果我使用ARC,我应该担心吗?这是默认方法.

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
Run Code Online (Sandbox Code Playgroud)

这里的关键字是dispose.由于我release在使用ARC时无法显式调用任何对象,我是否应该实现此方法?

memory-management objective-c ios

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

切断预处理器线

在C中,预处理程序语句可以使用\字符扩展到多行.

#define SWAP(a, b)  {                   \
                        a ^= b;         \
                        b ^= a;         \ 
                        a ^= b;         \
                    }
Run Code Online (Sandbox Code Playgroud)

这会将宏传播到几行,但有没有办法一行结束关闭宏?即:我想在与宏相同的行上编写代码,但不希望它成为宏的一部分.例如,有没有办法使以下可能?

#include <stdio.h> (some character here to end macro) int main(int argc, const char **argv)  { return 0; }
Run Code Online (Sandbox Code Playgroud)

有没有办法合法地将预处理程序语句和main函数(或任何其他代码)放在同一行上?

c macros newline

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