是否所有指针都是从指向结构类型的指针派生的问题都不容易回答.我发现这是一个重要问题,主要有以下两个原因.
A.缺少指向"任何"不完整或对象类型的指针,对方便的函数接口施加了限制,例如:
int allocate(ANY_TYPE **p,
size_t s);
int main(void)
{
int *p;
int r = allocate(&p, sizeof *p);
}
Run Code Online (Sandbox Code Playgroud)
[ 完整代码示例 ]
指向"任何"不完整或对象类型的现有指针明确描述为:
C99
/ C11
§6.3.2.3 p1
:
指向void的指针可以转换为指向任何不完整或对象类型的指针.[...]
从指向"任何"不完整或对象类型的现有指针派生的指针,指向void的指针,严格地是指向void的指针,并且不需要使用从指向"任何"不完整的指针派生的指针进行转换或对象类型.
B.程序员根据他们对特定实现的经验,使用基于不需要的假设的约定,有意识地或不知不觉地与指针的泛化相关,这种情况并不少见.假设,例如可转换,可表示为整数或共享公共属性:对象大小,表示或对齐.
根据C99 §6.2.5 p27
/ C11 §6.2.5 p28
:
[...]所有指向结构类型的指针应具有相同的表示和对齐要求.[...]
其次是C99 TC3 Footnote 39
/ C11 Footnote 48
:
相同的表示和对齐要求意味着可互换性作为函数的参数,函数的返回值和联合的成员.
虽然标准没有说:"指向结构类型的指针"并且选择了以下单词:"所有指向结构类型的指针",但它没有明确指定它是否适用于这种指针的递归推导.在标准中提到指针的特殊属性的其他情况下,它没有明确指定或提及递归指针派生,这意味着"类型派生"适用,或者它没有 - 但它没有明确提到.
虽然在引用类型时使用"所有指针"的措辞只使用两次,(对于结构和联合类型),而不是更明确的措辞:在整个标准中使用的"指针",我们不能总结它是否适用于这种指针的递归推导.
我想在用户点按搜索栏时,但在输入任何文本之前显示一些默认内容.
我有一个使用settext的解决方案:
- (void) searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller {
[searchDisplayController.searchBar setText:@" "];
}
Run Code Online (Sandbox Code Playgroud)
这有效,但它不优雅,搜索栏中的提示文字消失了.
有没有更好的方法将数据预加载到UISearchDisplayController中的SearchResultTableView,而无需在自定义控制器中自己实现整个UISearch功能?
有关所需效果的演示,请查看Safari的搜索框,如果点击它,搜索界面将打开,显示之前的搜索.
我正在尝试声明仅供Private
类别内部使用的属性:
@interface BarLayer (Private)
@property (readwrite, retain) MenuItemFont *menuButton;
@property (readwrite, retain) Menu *menuMenu;
@property (readwrite, retain) LabelAtlas *messageLabel;
@end
Run Code Online (Sandbox Code Playgroud)
现在我想弄清楚我应该在哪里@synthesize
.
我试过了:
@implementation BarLayer (Private)
@synthesize menuButton = _menuButton;
@synthesize menuMenu = _menuMenu;
@synthesize messageLabel = _messageLabel;
@end
Run Code Online (Sandbox Code Playgroud)
在这里,编译器抱怨:
@synthesize不允许在类别的实现中
所以我尝试将它放在我的BarLayer
实现中,但是在这里它没有在BarLayer
界面中找到声明.
在界面中找不到属性'menuButton'的声明
正确的方法是什么?
我在使用CoreData和iCloud时遇到了一些问题.我使用了苹果开发者论坛(iCloud)中的示例 - IPhoneCoreDataRecipes项目,该项目通过iCloud表示与CoreData的工作.它工作正常,但出现了一些冲突,并非所有实体都在同步.
我可以在日志中看到以下警告:
Warning>: +[PFUbiquityRecordImportConflict createTransactionLogForTransactionEntry:withError:](607): CoreData: Ubiquity: Unable to find transaction log for entry: <PFUbiquityTransactionEntry: 0x68b9a60> (entity: PFUbiquityTransactionEntry; id: 0x68c5d50 <x-coredata://697F667C-7541-43E7-B21B-5362D165537B/PFUbiquityTransactionEntry/p2> ; data: {
actingPeer = "0x1526e0 <x-coredata://697F667C-7541-43E7-B21B-5362D165537B/PFUbiquityPeer/p1>";
globalIDStr = "com.appmania.dreambookdata.coredata:DreamHistory:p1:mobile.99829CE6-D497-590F-B2F8-795CFFC84CCB";
knowledgeVectorString = "mobile.99829CE6-D497-590F-B2F8-795CFFC84CCB:1";
localIDStr = "x-coredata://D45E85ED-A2B7-48AC-96BF-6B2C64812656/DreamHistory/p1";
storeMetadata = "0x12d4a0 <x-coredata://697F667C-7541-43E7-B21B-5362D165537B/PFUbiquityStoreMetadata/p1>";
transactionDate = "2011-12-01 08:00:13 +0000";
transactionLogFilename = "7C9AD5E3-457E-4E2B-8F1C-A7D8878E5BDB.1.cdt";
transactionNumber = 1;
transactionTypeNum = 0;
})
Run Code Online (Sandbox Code Playgroud)
有人知道如何解决这些冲突吗?谢谢.
safeAreaInset(edge:alignment:spacing:content:)
:
\n\nThe modified view is inset by the height of content, from edge, with its safe area increased by the same amount.
\n
看来 SwiftUIsafeAreaInset
没有导入 UIKit 的安全区域:
ZStack {\n Color.black\n UIKitView()\n }\n .ignoresSafeArea(edges: .top)\n .safeAreaInset(edge: .top) {\n Text("TOP")\n .frame(minHeight: 200)\n .background(Color.cyan.opacity(0.5))\n }\n
Run Code Online (Sandbox Code Playgroud)\n在此示例中,视图black
和 的UIKitView
布局相同 - 它们忽略safeAreaInset:top
和状态栏。
问题是:如何了解UIKitView
游戏中的安全区域?
考虑以下:
\nstruct UIKitView: UIViewControllerRepresentable {\n func makeUIViewController(context: Context) -> some UIViewController { ViewController() }\n …
Run Code Online (Sandbox Code Playgroud) 我的目标上有一个"运行脚本"阶段,它呈现PDF手册.我想将此手册包含在产品的Xcode存档中.
如何从脚本中告诉Xcode在归档阶段要将哪些文件添加到其归档中?
目前,该脚本将PDF放在BUILT_PRODUCTS_DIR中,但这似乎不够.
xsltproc -o >(fop -fo - -pdf "$BUILT_PRODUCTS_DIR/doc/$TARGET_NAME.pdf") \
--stringparam use.extensions 0 \
--stringparam fop1.extensions 1 \
--stringparam draft.mode no \
--stringparam admon.graphics 1 \
--stringparam admon.graphics.extension .svg \
/opt/local/share/xsl/docbook-xsl/fo/docbook.xsl \
"$TARGET_NAME/manual.xml"
Run Code Online (Sandbox Code Playgroud) 我期望两个相同的变换到具有相同的结果对象hashCode
.我想使用此属性来检查我的对象是否以有意义的方式更改.
不幸的是,Guava的TransformedCollection extends AbstractCollection
(不像AbstractList
)没有实现hashCode
或等于,并且TransformedCollection
本身没有这样的尝试.
hashCode
迭代器的顺序返回的值计算一个或者这样的值吗? hashCodes
? TransformedCollection
的方式来解决这个问题AbstractCollection
?iOS文档说明你的视图控制器应该释放(并且nil,因为这是良好的做法,实际上是2.x兼容性必须的)-dealloc中任何保留的出口.
该文档还说明,如果要在视图不可见时发出清除并且发出内存警告,则应在-viewDidUnload中对其进行相同的操作.
我想知道两件事:
理想的答案回答了上述两个问题,如果在-dealloc VS -viewDidUnload中最佳地释放哪些属性之间存在区别,则详细阐明这一区别.
ios ×3
bash ×1
c ×1
c99 ×1
cocoa-touch ×1
collections ×1
core-data ×1
guava ×1
icloud ×1
java ×1
memory ×1
objective-c ×1
pointers ×1
struct ×1
swiftui ×1
uikit ×1
uisearchbar ×1
xcode ×1