给定具有retain属性的类的以下定义:
@interface FeedEntry : NSObject<NSCoding>
{
NSURL* url;
NSData* source;
}
@property (retain) NSURL* url;
@property (retain) NSData* source;
@end
@implementation FeedEntry
@synthesize url;
@synthesize source;
-(void)encodeWithCoder:(NSCoder*)coder
{
[coder encodeObject:url forKey:@"url"];
[coder encodeObject:source forKey:@"source"];
}
Run Code Online (Sandbox Code Playgroud)
为什么initWithCoder方法中的url属性需要"retain":
-(id)initWithCoder:(NSCoder*)coder
{
url = [[coder decodeObjectForKey:@"url"] retain];
source = [coder decodeObjectForKey:@"source"];
NSLog(@"got url=%@\n", url);
return self;
}
Run Code Online (Sandbox Code Playgroud)
具体来说,为什么合成的"获取url"方法不能保留对象?(我猜测源属性也需要保留).
我在硬件上使用SSE4.1内在函数时遇到了一些麻烦(我认为)支持它.谁能告诉我,如果我错过了什么?
在MacBookPro5,4(Penryn)上构建以下代码:
>g++ -msse sse4.cpp -S -o sse4.asm
#include <stdio.h>
#include <smmintrin.h>
int main ()
{
__m128 a, b;
const int mask = 0x55;
a.m128_f32[0] = 1.5;
a.m128_f32[1] = 10.25;
a.m128_f32[2] = -11.0625;
a.m128_f32[3] = 81.0;
b.m128_f32[0] = -1.5;
b.m128_f32[1] = 3.125;
b.m128_f32[2] = -50.5;
b.m128_f32[3] = 100.0;
__m128 res = _mm_dp_ps(a, b, mask);
printf_s("Original a: %f\t%f\t%f\t%f\nOriginal b: %f\t%f\t%f\t%f\n",
a.m128_f32[0], a.m128_f32[1], a.m128_f32[2], a.m128_f32[3],
b.m128_f32[0], b.m128_f32[1], b.m128_f32[2], b.m128_f32[3]);
printf_s("Result res: %f\t%f\t%f\t%f\n",
res.m128_f32[0], res.m128_f32[1], res.m128_f32[2], res.m128_f32[3]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
生成以下错误:
/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/smmintrin.h:35:3: error: …
Run Code Online (Sandbox Code Playgroud) 在我的项目上启用-Winline
会产生大量我不太理解的输出。有谁知道如何使用此输出来找出为什么我的特定函数没有内联?
我已成功插入malloc
,但calloc
似乎更成问题.
对于某些主机而言,calloc
内部可能存在内部calloc
调用,陷入无限循环dlsym
.但是,基本测试主机不会出现此行为,但我的系统的"ls"命令会出现此行为.
这是我的代码:
// build with: g++ -O2 -Wall -fPIC -ldl -o libnano.so -shared Main.cc
#include <stdio.h>
#include <dlfcn.h>
bool gNanoUp = false;// global
// Function types
typedef void* (*MallocFn)(size_t size);
typedef void* (*CallocFn)(size_t elements, size_t size);
struct MemoryFunctions {
MallocFn mMalloc;
CallocFn mCalloc;
};
MemoryFunctions orgMemFuncs;
// Save original methods.
void __attribute__((constructor)) __nano_init(void) {
fprintf(stderr, "NANO: init()\n");
// Get address of original functions
orgMemFuncs.mMalloc = …
Run Code Online (Sandbox Code Playgroud) 鉴于Random.exe
Windows 上的一些,我如何确定
我可以使用文件资源管理器、其他工具或编程方法中的属性吗?
我在Linux上有一个大型的C++应用程序,它构建并链接了许多第一方和第三方库.
应用程序的某些部分应该在不访问文件系统或网络的情况下执行(特别是加载网络文件).我们经常发现这个操作确实通常由于程序员错误而加载文件.
如何在代码中强制执行此操作?例如:
try {
lockFileSystem();
Application->DoImportantOperation();
unlockFileSystem();
} catch ( InvalidFileSystemAccess )
{
// bad programmer, no pizza
}
Run Code Online (Sandbox Code Playgroud)
或者是否存在某种较低级别的回调,应用程序可以在打开文件时挂钩?
注意我知道strace非常棒,但是它已经达到了需要在应用程序执行过程中强制执行的程度,而不是作为事后手动测试.
有没有人有分析iPhone/iPod文件系统的硬数据?我对阅读比写作更感兴趣.
我正在考虑进行一些测试,但我想我会检查一下是否有人更聪明和/或时间更充裕.
具体来说,我对许多小文件与较少大文件之间的速度差异以及各代iP*设备之间的差异感兴趣.
另一个问题是读取文件的ZIP压缩是否值得权衡解压缩,或者数据大小是否存在"收支平衡"点.
是否有Win32 API调用来检测用户系统的当前硬件加速级别?我不需要更改设置,但是如果禁用了硬件加速,我想缩小OpenGL显示的细节级别。
我想知道是否有一个Xcode或GCC预处理器符号用于应用程序的目标名称.
例如,如果我正在构建一个名为"MonkeyChicken"的应用程序,那么是否存在预处理器符号
printf( __TARGET_NAME__ )
Run Code Online (Sandbox Code Playgroud)
输出:
MonkeyChicken
Run Code Online (Sandbox Code Playgroud) 鉴于:
MY_CLASS* ptr = MY_CLASS::GetSomeInstance();
Run Code Online (Sandbox Code Playgroud)
什么是正确的方式输出ptr
到std::cerr
,所以我可以登录它的价值?注意我不想写类,只是地址.
c++ ×4
gcc ×3
filesystems ×2
acceleration ×1
c ×1
cocoa ×1
free ×1
hardware ×1
inline ×1
intrinsics ×1
iostream ×1
iphone ×1
ld-preload ×1
linux ×1
macros ×1
malloc ×1
networking ×1
objective-c ×1
opengl ×1
pointers ×1
profiling ×1
sse ×1
stderr ×1
windows ×1
xcode ×1