小编ric*_*h.e的帖子

Xcode 4调试器代码完成

首先,很高兴他们试图在Xcode 4中的gdb命令提示符下获得代码完成.但是在当前状态下,它使用命令提示符来调查几乎不可能的客观c对象 - 当我打字时,它将该单词自动填充到我不想要的内容中,如果不手动选择文本并将其删除,则无法撤消,然后重新开始.

我应该为此提交一个关于苹果的错误,但与此同时,有没有人为此解决这个问题(例如,关闭调试器的自动完成而不关闭代码编辑 - 我喜欢自动完成obj-c因为方法名称太长了:).

xcode objective-c

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

可以检测未捕获的堆栈分配对象吗?

是否有可能以任何方式(静态分析)阻止或检测以下错误,其中堆栈分配对象未被捕获并且超出了构造它的同一行的范围?

Resource  resourceA, resourceB;

void someFunction()
{
    ScopedResourceBinder resourceBindA( resourceA );
    ScopedResourceBinder( resourceB ); // <--- BUG
}
Run Code Online (Sandbox Code Playgroud)

第一个ScopedResourceBinder是正确的,但第二个没有做任何事情,因为它在"绑定"之后立即"解除绑定"(假设说).

这显然是一个程序员的错误,但我现在已经调试了几次(几个小时的几个小时)并且很难发现.一旦你看到它,你会想"啊,这是一个愚蠢的",但在实践中,很容易犯错误,编译器是无防御的......或者是它?

背景信息:我使用一个库,该库大量使用RAII类来推送弹出状态,例如OpenGL资源.使用范围管理绑定是手动调用bind()/ unbind()函数的一个重大改进,但是这里列出的潜在错误会出现这种新模式.

c++ raii

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

如何将函数存储为类成员变量

在Dart中是否可以存储带有返回和参数类型信息的回调函数?看来我可以做到以下几点:

class MyClass {
  void addCallback( callback( int ) )
  {
    _callback = callback;
  }

  var _callback;
}
Run Code Online (Sandbox Code Playgroud)

但是我认为如果_callback没有声明它会很好var,而是有关于它的返回和参数类型的信息.我在文档中找不到相关信息,有人知道吗?

dart

5
推荐指数
2
解决办法
769
查看次数

CMake:复制图标以捆绑资源

我有一个构建MACOSX_BUNDLE可执行文件的CMakeLists.txt脚本,但我很难找到将图标文件放入bundle资源目录的"正确方法".我用以下设置图标包属性:

# set icon
set( ICON_NAME "MyApp.icns" )
set( ICON_PATH "${PROJECT_SOURCE_DIR}/../data/${ICON_NAME}" )

set_target_properties( MyApp PROPERTIES MACOSX_BUNDLE_ICON_FILE ${ICON_NAME} )
Run Code Online (Sandbox Code Playgroud)

看来正确的方法(如现有帖子中所示)应该是:

set_source_files_properties( ${ICON_PATH} PROPERTIES MACOSX_PACKAGE_LOCATION Resources )
Run Code Online (Sandbox Code Playgroud)

但是,没有MyApp.app/Contents/Resources,也没有复制MyApp.icns ..以下是(在我看来)一个解决方法:

file( COPY ${ICON_PATH} DESTINATION "MyApp.app/Contents/Resources/" )
Run Code Online (Sandbox Code Playgroud)

因为我经常把东西复制到resouces文件夹中,我宁愿用'正确的方式'来做,但是有人能说出为什么这不起作用,因为我已经在上面做了吗?

macos cmake

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

可以用位置信息编写改进的cmake日志宏吗?

在调试cmake代码的时候,我发现自己写的内容如下:

message( "[some_filename.cmake]: some message about what is going on here." )
Run Code Online (Sandbox Code Playgroud)

在C++中,我使用宏来自动记录文件名和行号 - 这在cmake中是否可行?理想情况下,我想用以下内容编写一个宏:

log_info( "some message about what is going on here." )
Run Code Online (Sandbox Code Playgroud)

它将打印到控制台:

|info   | some_filename.cmake[72] some message about what is going on here.
Run Code Online (Sandbox Code Playgroud)

c++ cmake

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

NSPanel HUD带有标题和关闭按钮

我在尝试创建类似于VLC均衡器中使用的HUD样式的NSPanel时遇到了困难(图像在这里).首先,我希望透视面板上有一个关闭按钮和标题.这是我试图用来实现的代码

- (IBAction)buttonTapped:(id)sender {
    NSPanel *panel = [[NSPanel alloc] initWithContentRect:NSMakeRect(200.0, 200.0, 300, 200)
                                                styleMask:NSHUDWindowMask | NSClosableWindowMask | NSTitledWindowMask
                                                  backing:NSBackingStoreBuffered
                                                    defer:YES];

    [panel makeKeyAndOrderFront:nil];
}
Run Code Online (Sandbox Code Playgroud)

NSHUDWindowMaskparam显然有效,我得到一个灰色的seethrough面板.但是,NSClosableWindowMaskparam似乎什么都不做(没有关闭按钮)并NSTitledWindowMask产生以下运行时错误:

Heads Up Display窗口不支持Window styleMask 0x2003

据我在文档中可以看出,应该允许这种掩码组合.我已经尝试过OS X 10.7和10.8 sdks.有谁知道如何实现这个样式窗口以及关闭/标题按钮?

cocoa

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

保持视图在导航控制器中的所有视图后面持久化的最佳方法

并提前感谢.

我正在寻找有关如何在我的应用程序中布局视图控制器的建议,我仍然有一个持久的背景和一些背景动画

这是它目前的设置方式:

  • AppDelegate创建一个导航控制器,RootViewController和一个Sprite Layer(它是UIView的子类)
  • AppDelegate还将背景图像保存为backgroundColor属性
  • 正常情况下,使用根视图控制器初始化导航控制器
  • rootview控制器将不同的表视图推送到导航堆栈

在代码中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

UIImageView* backgroundView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"underthesea.jpg"]] autorelease];
backgroundView.contentMode = UIViewContentModeScaleAspectFill;
backgroundView.frame = [UIScreen mainScreen].bounds;

self.viewController = [[[RootViewController alloc] init] autorelease];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
self.spriteLayer = [[[SpriteLayer alloc] initWithFrame:self.viewController.view.frame] autorelease];
self.viewController.spriteLayer = self.spriteLayer;

[window addSubview:backgroundView];    
[window addSubview:self.spriteLayer];
[window addSubview:self.navigationController.view];

[window makeKeyAndVisible];
return YES;
}
Run Code Online (Sandbox Code Playgroud)

`

Sprite Layer一直在后台可见,包含不同的动画.问题是,现在我正在尝试实现autorisizing并遇到困难,因为sprite层中的视图不在UIViewController中.

我认为一种可能性是使SpriteLayer子类为UIViewController,但不要将它放在导航控制器中; 它只会存在于导航控制器正在显示的任何视图后面.我不知道是否同时拥有2个视图控制器,这将是错误的来源或只是糟糕的设计,因为我已经在StackOverflow上读到这不是视图控制器的预期设计.

有什么意见吗?

干杯,里奇

PS我在代码块中放置一个客观的C方法时遇到问题.后面的勾号似乎不起作用,因为代码字体中唯一的代码部分是缩进的.有人知道这样做的正确方法吗?再次感谢.

iphone background uinavigationcontroller

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

为什么CALayer的移动速度比UIView慢?

我有一个UIView子类,当用户触摸它时,使用以下重写方法移动'event':

// In a custom UIView...

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    CGPoint point = [[touches anyObject] locationInView:self];
    UIView *eventView = [self.ringOfEvents hitTest:point withEvent:event];
    for (EventView *e in self.events) {
        if (e == eventView) {
            event.position = point;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么当我制作EventViewCALayer而不是UIView时,运动会慢慢变成蠕动?我也可以发布该代码,但它是如此相似,以至于我认为没有必要.

我认为抽象到较低级别会加速事件处理,但我必须遗漏一些东西.

顺便说一句,如果*eventViewUIView或的子类CALayer,则position属性如下:

- (void)setPosition:(CGPoint)pos {
    self.layer.position = pos;
}

- (CGPoint)position {
    return self.layer.position;
}
Run Code Online (Sandbox Code Playgroud)

不知道为什么当使用UIView作为CALayer时,我的延迟会大大减少..

iphone cocoa-touch core-animation uikit

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

一些库如何使用多种返回类型覆盖operator []?

我在现代C++中遇到过各种容器库,它们已经找到了一种方法来覆盖operator[]并仍然返回多种类型.例如,使用nlohmann :: json,以下代码都是有效的:

const nlohmann::json settings;

// set some values:
j["pi"] = 3.141;
j["happy"] = true;

// get some values:
std::string deviceName = settings["device"];
bool yesOrNo = settings["blah"];
Run Code Online (Sandbox Code Playgroud)

这怎么可能,特别是在案例中呢?在我自己的尝试中,我遇到了"无法推断'T'的模板参数"的常见错误情况.我确实认为它与一些代理对象(可能value_t或者object_t)有关,但是在nlohmann的json实现的情况下,我无法完全遵循模板逻辑(这非常令人印象深刻!).

c++ templates

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

使用glVertexAttrib3f崩溃glDrawArrays

我在glDrawArrays上看到了很多与EXC_BAD_ACCESS信号相关的帖子,但是没有一个非常适合我的问题,所以就这样了.

以下代码有效:

glEnableVertexAttribArray(mAttributes.position);
glEnableVertexAttribArray(mAttributes.color);

GLsizei stride = sizeof(Vertex);
const GLvoid* pPos = &mVertices2[0].mPos.x;
const GLvoid* pColors = &mVertices2[0].mColor.r;

glVertexAttribPointer(mAttributes.position, 2, GL_FLOAT, GL_FALSE, stride, pPos);
glVertexAttribPointer(mAttributes.color, 3, GL_FLOAT, GL_FALSE, stride, pColors);

glDrawArrays(GL_LINE_STRIP, 0, mVertices2.size());
Run Code Online (Sandbox Code Playgroud)

但我似乎无法使用常量属性写入颜色.这会在glDrawArrays上崩溃:

glEnableVertexAttribArray(mAttributes.position);
glEnableVertexAttribArray(mAttributes.color);

glVertexAttribPointer(mAttributes.position, 2, GL_FLOAT, GL_FALSE, stride, pPos);
glVertexAttrib3f(mAttributes.color, 1.0f, 0.0f, 0.0f);

glDrawArrays(GL_LINE_STRIP, 0, mVertices2.size()); // <-- EXC_BAD_ACCESS because of the line above
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么?你能只用常量顶点属性调用glDrawElements吗?

c++ iphone opengl-es-2.0

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