小编nac*_*o4d的帖子

UIApplication sharedApplication - keyWindow是nil?

我想将CGPoint从我的UIView转换为UIWindow坐标,并意识到UIApplication keyWindow总是为零; 为什么是这样?

我尝试过convertPoint:toView:UIView 的方法.

请在Xcode模板(View应用程序)中查看我在视图控制器中尝试的示例代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    UIView *test =  [[UIView alloc] initWithFrame:CGRectMake(40,40,250,250)];
    [test setBackgroundColor:[UIColor redColor]];
    [self.view addSubview:test];

    CGPoint p = CGPointMake(100, 100);
    CGPoint np;

    np = [test convertPoint:p toView:[[UIApplication sharedApplication] keyWindow]];
    NSLog(@"p:%@ np:%@", NSStringFromCGPoint(p), NSStringFromCGPoint(np));

    AppDelegate *appDel =  (AppDelegate *)[UIApplication sharedApplication].delegate;

    np = [test convertPoint:p toView:[appDel window]];
    NSLog(@"p:%@ np:%@", NSStringFromCGPoint(p), NSStringFromCGPoint(np));

    np = [test convertPoint:p toView:nil];
    NSLog(@"p:%@ np:%@", NSStringFromCGPoint(p), NSStringFromCGPoint(np));

    [test release];

    if(![[UIApplication sharedApplication] keyWindow])
        NSLog(@"window was nil");
}
Run Code Online (Sandbox Code Playgroud)

我得到:

p:{100, 100} np:{100, …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uiapplication uiapplicationdelegate

32
推荐指数
3
解决办法
2万
查看次数

将运算符作为参数传递

我想要一个评估2个bool变量的函数(比如真值表)

例如:

以来

T | F:T

然后

myfunc('t', 'f', ||);  /*defined as: bool myfunc(char lv, char rv, ????)*/
Run Code Online (Sandbox Code Playgroud)

应该回归真实;

我怎么能传递第三个参数?(我知道可以将它作为char*传递但是我必须有另一个表来比较运算符字符串,然后执行我想避免的操作)

是否可以在函数/方法中传递^(XOR)或||(OR)或&&(AND)等运算符?

提前致谢

c c++ parameters operator-keyword

26
推荐指数
2
解决办法
2万
查看次数

丢弃一行中的更改

我注意到在Tower(Mac的Git客户端)中,用户甚至可以逐行丢弃更改.我想知道如何使用命令行完成这项工作?或许是塔的特别之处?

在这种情况下,我经常发现自己:

@@ -391,7 +392,7 @@ extern BOOL validateReceiptAtPath(NSString *path);

       NSURL *url = [self fileURL];
        if (url != nil) {
                NSRect readFrame = [self _readPreferenceOfFileAtURL:url];
-               
+
                for (NSScreen * screen in [NSScreen screens]) {
                        NSRect screenVisibleRect = [screen visibleFrame];
                        ...
Run Code Online (Sandbox Code Playgroud)

看看我有一个+和一个- ?我想丢弃它,所以我的提交有最小的变化(因此冲突的可能性更小,更容易审查)

:)

git

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

如何知道日期是今天?

我正在尝试这个但是没有工作......为什么?

<html>
<body>
    <script type="text/javascript">

        var today=new Date(); //today is Nov 28, 2010
        today.setHours(0);
        today.setMinutes(0);
        today.setSeconds(0);
        document.write(today+" ");

        var today2 = new Date("November 28, 2010");
        document.write(today2 + " ");
        if (today == today2) { document.write("==");
        if (!(today > today2) && !(today < today2) ) {document.write("==  ");}
        if (today > today2) { document.write(">  ");}
        if (today >= today2 ){ document.write(">=  ");}
        if (today < today2 ) { document.write("<  ");}
        if (today <= today2 ){ document.write("<=  ");}

    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我总是得到这个:

Sun …
Run Code Online (Sandbox Code Playgroud)

javascript

23
推荐指数
2
解决办法
2万
查看次数

容器中的智能指针如std :: vector?

我正在学习有关智能指针(std::auto_ptr),只是看这里这里是智能指针(std::auto_ptr)不应该在容器(即放std::vector),因为即使大多数编译器不会抱怨,这似乎是正确的.没有规则说智能指针不会在内部复制(vector例如按类)并传输其所有权,然后指针将变为NULL.最后,一切都会搞砸.

实际上,这种情况多久发生一次?

有时我有指针的向量,如果在将来我决定我想要一个智能指针的矢量我会选择什么?

我知道C++ 0x和Boost库,但是现在,我更倾向于坚持使用STL方法.

c++ pointers smart-pointers std auto-ptr

19
推荐指数
2
解决办法
2万
查看次数

以编程方式从nib的NSView子类加载对象

如何使用Xib正确加载作为NSView子类的对象?

我希望它不是从头开始动态加载,所以我做了一个MyView.Xib来自MyDocument.m我做了:

MyView *myView = [[MyView alloc] initWithFrame:...];
[NSBundle loadNibNamed:@"MyView" owner:myView];
[someview addSubview:myView];
...
Run Code Online (Sandbox Code Playgroud)

并且背景很好(它调用drawrect:它按预期绘制)但是我放在xib上的所有按钮都不会出现.我已经检查了,他们已经加载但他们的超级视图不是同一个对象myView.

为什么是这样?我想我在Xib中遗漏了一些东西,但我不知道究竟是什么.换句话说:我如何确保我的xib中的根视图与文件所有者是同一个对象?

我希望mac有类似的东西:

NSArray* nibViews =  [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil]; //in iOS this will load the xib
MyView* myView = [ nibViews objectAtIndex:1];
[someview addSubview:myView];
...
Run Code Online (Sandbox Code Playgroud)

提前致谢.

编辑

我想我已经意识到问题的根源......(??)

在MyView类中,我有各种IBOutlet,它们在IB中正确连接,这就是为什么它们加载得很好(我可以参考它们).但是顶视图没有IBOutlet.因此,当NSBundle加载nib时,顶视图会被分配给其他对象.我认为如果我将IB中的顶视图设置为来自类:MyView并且将其myView作为所有者,[NSBundle loadNibNamed:@"MyView" owner:myView];但似乎并非如此.我究竟做错了什么?

macos cocoa objective-c

18
推荐指数
2
解决办法
2万
查看次数

Xcode如何找到隐式目标依赖项?

Xcode有时会自动找到依赖项.当我是那个定义关系的人,当我变得懒惰时,我认为是可以的......

但更多的时候我发现自己面临着一个存在(中等到大尺寸)项目的目标.由于该项目是由其他人制作的,我发现很难理解哪些目标取决于什么,因为并非所有关系都是明确的.

Xcode用于查找此类关系的规则是什么?(我希望我能理解逻辑,所以在我的脑海中运行它并且可能在将来节省一些时间)或者是什么使目标有资格隐含地依赖于另一个?

目标及其创建的产品可能与另一个目标相关.如果目标需要另一个目标的输出以便构建,则说第一个目标依赖于第二个目标.如果两个目标都位于同一工作空间中,Xcode可以发现依赖关系,在这种情况下,它会按所需顺序构建产品.这种关系被称为隐式依赖.

来源:iOS开发者库→Xcode概念→Xcode目标

macos xcode ios

16
推荐指数
2
解决办法
5580
查看次数

使用-dismissPopoverAnimated解雇UIPopoverController:不会调用委托吗?

我有自己的UIPopoverController作为委托:当我在弹出控制器外面点击时我接到电话,但当我点击内部时我也想解雇,所以我使用-dismissPopoverAnimated:但是在这种情况下不调用委托.这是正常的吗?这是一个错误还是我做错了什么?

newDocPopoverController = [[UIPopoverController alloc] initWithContentViewController:vc];
[newDocPopoverController setPopoverContentSize:CGSizeMake(240, 44*4)];
[newDocPopoverController presentPopoverFromBarButtonItem:sender 
                permittedArrowDirections:UIPopoverArrowDirectionAny
                                                        animated:YES];
[newDocPopoverController setDelegate:self];
Run Code Online (Sandbox Code Playgroud)

更新:

哦,无论问题的根源(是否是一个错误或这是预期的行为)自己调用委托解决了问题:)

当触摸contentViewController的视图时,我将调用父UIPopoverController的委托.

if ([parentPopoverController.delegate popoverControllerShouldDismissPopover:parentPopoverController]){
    [parentPopoverController dismissPopoverAnimated:YES];
    [parentPopoverController.delegate popoverControllerDidDismissPopover:parentPopoverController];
}r];
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch delegates uipopovercontroller

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

没有箭头的UIPopoverController?

我想知道制作一个没有箭头的UIPopoverController其实我想模拟这样的东西: iPad系统偏好设置中的set-passcode屏幕截图

看到了

  • 没有箭头

  • 有一个标题在UIPopoverController的扩展顶部边框内部,而不是像普通的UIPopoverController一样.

我假设这不是一个真正的UIPopoverController对象,但我会欣赏有关如何产生相同效果的建议(使用CoreGraphics? - >特别是3D优秀边框的半透明降级效果)和/或链接到某些来源(如果有人已经完成)这之前.

提前致谢.

伊格纳西奥

编辑:

我仍在寻找这些东西,并意识到即使在第三方应用程序正在使用的例子是:twitterrific for iPad,如图所示.有人请?将标题放在popovercontroller中只是丑陋的. 替代文字

iphone cocoa-touch core-graphics uikit uipopovercontroller

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

如何在C++中实现回调?

我想在c ++中实现一个具有回调的类.

所以我想我需要一个有两个参数的方法:

  • 目标对象.(让我们说*myObj)
  • 指向目标对象的成员函数的指针.(所以我可以做*myObj-> memberFunc();)

条件是:

  • myObj可以来自任何一个类.

  • 将成为回调函数的成员函数是非静态的.

我一直在读这个,但看起来我需要事先了解myObj的类.但我不知道该怎么做.我怎么处理这个?这在C++中是否可行?

这是我想到的,但肯定是不正确的.

class MyClassWithCallback{
public
    void *targetObj;
    void (*callback)(int number);
    void setCallback(void *myObj, void(*callbackPtr)(int number)){
        targetObj = myObj;
        callback = callbackPtr;
    };
    void callCallback(int a){
        (myObj)->ptr(a);
    };
};
class Target{
public
    int res;
    void doSomething(int a){//so something here. This is gonna be the callback function};        
};

int main(){
    Target myTarget;
    MyClassWithCallback myCaller;
    myCaller.setCallback((void *)&myTarget, &doSomething);
Run Code Online (Sandbox Code Playgroud)

}

我感谢任何帮助.

谢谢.

更新大多数人说观察和代表,这就是我正在寻找的,我是一个Objective-C/Cocoa头脑的家伙.我目前的实现是使用具有虚函数的接口.我只是认为传递对象和成员函数指针(如boost!)而不是定义接口会"更聪明".但似乎每个人都认为Interfaces是最简单的方法吗?Boost似乎是一个好主意,(假设已安装)

c++ callback

13
推荐指数
3
解决办法
3万
查看次数