{"id":3521,"date":"2025-04-09T08:39:07","date_gmt":"2025-04-09T00:39:07","guid":{"rendered":"https:\/\/saludpcb.com\/zh\/?p=3521"},"modified":"2025-09-26T06:15:47","modified_gmt":"2025-09-25T22:15:47","slug":"objective-c-mac-clock-app-vscode","status":"publish","type":"post","link":"https:\/\/saludpcb.com\/zh\/objective-c-mac-clock-app-vscode\/","title":{"rendered":"2025 \u9084\u5728\u7528 Objective-C\uff1f\u900f\u904e VSCode \u6253\u9020\u5f37\u5927 macOS \u6642\u9418\u61c9\u7528\uff01"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator alignwide has-text-color has-palette-color-1-color has-alpha-channel-opacity has-palette-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<p>\u7576\u8a31\u591a\u958b\u767c\u8005\u5c07\u76ee\u5149\u8f49\u5411 Swift \u548c\u73fe\u4ee3\u6846\u67b6\u6642\uff0c<strong>Objective-C<\/strong> \u5e38\u88ab\u8a8d\u70ba\u5df2\u8d70\u5165\u6b77\u53f2\u821e\u53f0\u3002\u4f46\u5728\u8a31\u591a\u5e95\u5c64\u61c9\u7528\u3001macOS \u684c\u9762\u958b\u767c\uff0c\u751a\u81f3\u8207 IoT \u88dd\u7f6e\u6574\u5408\u7684\u60c5\u5883\u4e2d\uff0cObjective-C \u4f9d\u7136\u5c55\u73fe\u51fa\u5b83\u9748\u6d3b\u8207\u9ad8\u6548\u7684\u4e00\u9762\u3002\u6211\u5c07\u793a\u7bc4\u5982\u4f55\u5728 2025 \u5e74\uff0c\u900f\u904e VSCode \u642d\u914d Objective-C \u6253\u9020\u4e00\u6b3e macOS \u684c\u9762\u6642\u9418\u61c9\u7528\uff0c\u4e26\u70ba\u672a\u4f86\u64f4\u5145\u81f3 IoT \u88dd\u7f6e\u6253\u4e0b\u57fa\u790e\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/saludpcb.com\/zh\/wp-content\/uploads\/2025\/04\/Still-Using-Objective-C-in-2025-Build-a-Powerful-macOS-Clock-in-VSCode-c.jpg\" alt=\"Objective-C\" class=\"wp-image-3527\" title=\"\" srcset=\"https:\/\/saludpcb.com\/zh\/wp-content\/uploads\/2025\/04\/Still-Using-Objective-C-in-2025-Build-a-Powerful-macOS-Clock-in-VSCode-c.jpg 1024w, https:\/\/saludpcb.com\/zh\/wp-content\/uploads\/2025\/04\/Still-Using-Objective-C-in-2025-Build-a-Powerful-macOS-Clock-in-VSCode-c-768x768.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>\u5167\u5bb9<\/h2><nav><ul><li class=\"\"><a href=\"#\u70ba\u4ec0\u9ebc\u9078\u64c7-vs-code-\u4f5c\u70ba-c-\u958b\u767c\u74b0\u5883\uff1f\">\u70ba\u4ec0\u9ebc\u9078\u64c7 Objective C\uff1f<\/a><\/li><li class=\"\"><a href=\"#a\">\u70ba\u4ec0\u9ebc\u4e0d\u9078 Xcode\uff1f\u9078\u64c7 VSCode \u4f86\u958b\u767c<\/a><\/li><li class=\"\"><a href=\"#\u74b0\">\u74b0\u5883\u642d\u5efa<\/a><\/li><li class=\"\"><a href=\"#\u5efa\u7acb-vs-code-c-\u5c08\u6848\">\u5728 VSCode \u5efa\u7acb C++ \u5c08\u6848<\/a><\/li><li class=\"\"><a href=\"#com-port-\u5217\u8209\u7a0b\u5f0f\">\u5275\u5efa macOS \u6642\u9418\u61c9\u7528\u7a0b\u5f0f<\/a><\/li><li class=\"\"><a href=\"#\u914d\u7f6e-c-make-lists-txt\">\u914d\u7f6e CMakeLists.txt<\/a><\/li><li class=\"\"><a href=\"#\u7de8\u8b6f\u8207\u57f7\u884c\">\u7de8\u8b6f\u8207\u57f7\u884c<\/a><\/li><li class=\"\"><a href=\"#\u6700\u7d42\u6210\u679c\u756b\u9762\">\u6700\u7d42\u6210\u679c\u756b\u9762<\/a><\/li><li class=\"\"><a href=\"#\u7d50\u8ad6\">\u7d50\u8ad6<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u70ba\u4ec0\u9ebc\u9078\u64c7-vs-code-\u4f5c\u70ba-c-\u958b\u767c\u74b0\u5883\uff1f\">\u70ba\u4ec0\u9ebc\u9078\u64c7 Objective C\uff1f<\/h2>\n\n\n\n<p>\u96d6\u7136 Swift \u662f\u860b\u679c\u7684\u5b98\u65b9\u63a8\u5ee3\u8a9e\u8a00\uff0c\u4f46 Objective-C \u4f9d\u7136\u6709\u5b83\u4e0d\u53ef\u53d6\u4ee3\u7684\u50f9\u503c\u3002\u8a31\u591a\u73fe\u5b58\u7684 macOS \u548c iOS \u6846\u67b6\u4ecd\u7136\u662f\u57fa\u65bc Objective-C \u5beb\u6210\u7684\uff0c\u4e26\u4e14\u5b83\u7684\u904b\u884c\u6548\u7387\u548c\u6210\u719f\u7684\u751f\u614b\u7cfb\u7d71\u4ecd\u7136\u7121\u53ef\u66ff\u4ee3\u3002\u5982\u679c\u4f60\u66fe\u7d93\u63a5\u89f8\u904e Apple \u7684 App \u958b\u767c\uff0c\u7279\u5225\u662f\u8001\u820a\u7684\u5c08\u6848\u6216\u5167\u90e8\u958b\u767c\u5de5\u5177\uff0cObjective-C \u4ecd\u7136\u662f\u975e\u5e38\u5e38\u898b\u7684\u8a9e\u8a00\u3002<\/p>\n\n\n\n<p>\u6b64\u5916\uff0cObjective-C \u5f37\u5927\u7684\u52d5\u614b\u904b\u884c\u6642\u7cfb\u7d71\u548c\u7c21\u6f54\u7684\u8a9e\u6cd5\u8b93\u5b83\u5728\u8a31\u591a\u7cfb\u7d71\u5c64\u7d1a\u7684\u958b\u767c\u4e2d\u4f9d\u7136\u4fdd\u6301\u7af6\u722d\u529b\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"a\">\u70ba\u4ec0\u9ebc\u4e0d\u9078 Xcode\uff1f\u9078\u64c7 VSCode \u4f86\u958b\u767c<\/h2>\n\n\n\n<p>\u5927\u90e8\u5206 Apple \u958b\u767c\u8005\u7fd2\u6163\u65bc\u4f7f\u7528 Xcode \u4f86\u958b\u767c\u61c9\u7528\u7a0b\u5f0f\uff0c\u4f46\u5c0d\u65bc\u90a3\u4e9b\u559c\u6b61\u81ea\u8a02\u5de5\u4f5c\u6d41\u7a0b\u7684\u958b\u767c\u8005\u4f86\u8aaa\uff0c<strong>VSCode<\/strong> \u662f\u4e00\u500b\u6975\u597d\u7684\u66ff\u4ee3\u65b9\u6848\u3002VSCode \u4e0d\u50c5\u8f15\u4fbf\uff0c\u9084\u5177\u6709\u5f37\u5927\u7684\u64f4\u5c55\u652f\u6301\uff0c\u4f7f\u5176\u6210\u70ba\u8a31\u591a\u958b\u767c\u8005\u7684\u9996\u9078\u7de8\u8f2f\u5668\u3002<\/p>\n\n\n\n<p>VSCode \u652f\u63f4\u591a\u8a9e\u8a00\u548c\u591a\u7a2e\u5de5\u5177\u93c8\uff0c\u4e26\u4e14\u80fd\u5920\u5b8c\u7f8e\u914d\u5408 Objective-C \u548c C++ \u9032\u884c\u958b\u767c\u3002\u5b83\u7684\u9748\u6d3b\u6027\u548c\u81ea\u8a02\u529f\u80fd\u53ef\u4ee5\u8b93\u4f60\u5728\u958b\u767c\u904e\u7a0b\u4e2d\u4e0d\u53d7\u5236\u65bc\u67d0\u4e9b IDE \u7684\u6846\u67b6\u9650\u5236\uff0c\u4e26\u4e14\u9084\u80fd\u5920\u8f15\u9b06\u7ba1\u7406\u5927\u578b\u5c08\u6848\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u74b0\">\u74b0\u5883\u642d\u5efa<\/h2>\n\n\n\n<p>\u958b\u59cb\u4e4b\u524d\uff0c\u8acb\u78ba\u4fdd\u5df2\u5b89\u88dd\u4ee5\u4e0b\u8edf\u9ad4\uff1a <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>VSCode<\/strong>\uff08<a href=\"https:\/\/code.visualstudio.com\/\" target=\"_blank\" rel=\"noopener\">\u4e0b\u8f09<\/a>\uff09<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/saludpcb.com\/zh\/premium-cpp-vscode-setup-guide\/\">C++ \u7de8\u8b6f\u5668<\/a><\/strong>\uff08GCC\/Clang\/MSVC\uff09<\/li>\n\n\n\n<li>CMake Tool \u64f4\u5c55<\/li>\n\n\n\n<li><strong>\u5b89\u88dd Xcode Command Line Tools<\/strong><br>\u958b\u767c Objective-C \u61c9\u7528\u7a0b\u5f0f\u9700\u8981\u4e00\u4e9b\u4f86\u81ea Apple \u7684\u5de5\u5177\u93c8\u3002\u6253\u958b\u7d42\u7aef\u6a5f\u4e26\u57f7\u884c\u4ee5\u4e0b\u547d\u4ee4\u4f86\u5b89\u88dd Xcode \u7684\u547d\u4ee4\u884c\u5de5\u5177\uff1a<br><\/li>\n\n\n\n<li><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"><code>xcode-select --install<\/code><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u5efa\u7acb-vs-code-c-\u5c08\u6848\">\u5728 VSCode \u5efa\u7acb C++ \u5c08\u6848<\/h2>\n\n\n\n<p>\u5efa\u7acb\u4e00\u500b\u8cc7\u6599\u593e\u00a0<code><strong>MacClockApp<\/strong><\/code> \u4e26\u958b\u555f VSCode \u518d\u5efa\u7acb\u5982\u4e0b\u7684\u6a94\u6848\u7d50\u69cb \uff0c\u4e26\u5728\u8cc7\u6599\u593e\u4e2d\u5efa\u7acb\u4ee5\u4e0b\u6a94\u6848\u7d50\u69cb\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">MacClockApp\/\n\u251c\u2500\u2500 CMakeLists.txt   # CMake configuration\n\u251c\u2500\u2500 main.mm          # Main app file (includes C++ time logic)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"com-port-\u5217\u8209\u7a0b\u5f0f\">\u5275\u5efa macOS \u6642\u9418\u61c9\u7528\u7a0b\u5f0f<\/h2>\n\n\n\n<p>\u5728 VSCode \u4e2d\uff0c\u5275\u5efa\u4e00\u500b\u65b0\u7684\u6587\u4ef6\u593e\u4f5c\u70ba\u4f60\u7684\u5c08\u6848\u6839\u76ee\u9304\uff0c\u4e26\u6309\u7167\u4e0a\u9762\u7684\u6307\u793a\u8a2d\u7f6e\u6a94\u6848\u7d50\u69cb\u3002<br>\u5728\u5c08\u6848\u6587\u4ef6\u593e\u4e2d\uff0c\u5275\u5efa\u4e00\u500b\u540d\u70ba\u00a0<strong>main.mm<\/strong>\u00a0\u7684\u6587\u4ef6\uff0c\u4e26\u5c07\u4ee5\u4e0b\u4ee3\u78bc\u7c98\u8cbc\u5230\u6587\u4ef6\u4e2d\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">#import &lt;Cocoa\/Cocoa.h&gt;\n#include &lt;ctime&gt;\n#include &lt;sstream&gt;\n\n\/\/ C++: Get current time as HH:MM:SS\nstd::string getCurrentTime() {\n    time_t now = time(nullptr);\n    tm *ltm = localtime(&amp;now);\n\n    std::ostringstream oss;\n    oss &lt;&lt; (ltm-&gt;tm_hour &lt; 10 ? \"0\" : \"\") &lt;&lt; ltm-&gt;tm_hour &lt;&lt; \":\"\n        &lt;&lt; (ltm-&gt;tm_min &lt; 10 ? \"0\" : \"\") &lt;&lt; ltm-&gt;tm_min &lt;&lt; \":\"\n        &lt;&lt; (ltm-&gt;tm_sec &lt; 10 ? \"0\" : \"\") &lt;&lt; ltm-&gt;tm_sec;\n    return oss.str();\n}\n\n\/\/ App delegate\n@interface ClockAppDelegate : NSObject &lt;NSApplicationDelegate&gt;\n@property (strong) NSWindow *window;\n@property (strong) NSTextField *label;\n@property (strong) NSTimer *timer;\n@end\n\n@implementation ClockAppDelegate\n\n\/\/ Quit app when window is closed\n- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender {\n    return YES;\n}\n\n- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {\n    \/\/ Create window\n    NSRect frame = NSMakeRect(0, 0, 600, 200);\n    self.window = [[NSWindow alloc] initWithContentRect:frame\n                                               styleMask:(NSWindowStyleMaskTitled |\n                                                          NSWindowStyleMaskClosable |\n                                                          NSWindowStyleMaskMiniaturizable)\n                                                 backing:NSBackingStoreBuffered\n                                                   defer:NO];\n    [self.window setTitle:@\"Big Clock\"];\n    [self.window center];\n\n    \/\/ Create label\n    self.label = [[NSTextField alloc] initWithFrame:NSMakeRect(50, 50, 500, 100)];\n    [self.label setBezeled:NO];\n    [self.label setDrawsBackground:NO];\n    [self.label setEditable:NO];\n    [self.label setSelectable:NO];\n    [self.label setAlignment:NSTextAlignmentCenter];\n\n    \/\/ Set large font\n    NSFont *font = [NSFont systemFontOfSize:100.0];\n    [self.label setFont:font];\n\n    [[self.window contentView] addSubview:self.label];\n\n    \/\/ Start timer to update clock every second\n    self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0\n                                                  target:self\n                                                selector:@selector(updateTime)\n                                                userInfo:nil\n                                                 repeats:YES];\n\n    [self.window makeKeyAndOrderFront:nil];\n    [self updateTime];\n}\n\n\/\/ Update label with current time\n- (void)updateTime {\n    std::string timeStr = getCurrentTime();\n    NSString *time = [NSString stringWithUTF8String:timeStr.c_str()];\n    [self.label setStringValue:time];\n}\n\n@end\n\n\/\/ Main entry point\nint main(int argc, const char * argv[]) {\n    @autoreleasepool {\n        NSApplication *app = [NSApplication sharedApplication];\n        ClockAppDelegate *delegate = [[ClockAppDelegate alloc] init];\n        [app setDelegate:delegate];\n        return NSApplicationMain(argc, argv);\n    }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u914d\u7f6e-c-make-lists-txt\"><strong>\u914d\u7f6e CMakeLists.txt<\/strong><\/h2>\n\n\n\n<p>\u5728\u4f60\u7684\u5c08\u6848\u6839\u76ee\u9304\u4e2d\uff0c\u5275\u5efa\u4e00\u500b\u540d\u70ba&nbsp;<strong>CMakeLists.txt<\/strong>&nbsp;\u7684\u6587\u4ef6\uff0c\u4e26\u6dfb\u52a0\u4ee5\u4e0b\u5167\u5bb9\u4f86\u8a2d\u7f6e CMake \u9805\u76ee\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">cmake_minimum_required(VERSION 3.16)\nproject(MacClockApp LANGUAGES C CXX OBJCXX)\n\n# Set C++ and Objective-C++ standards\nset(CMAKE_CXX_STANDARD 17)\nset(CMAKE_OBJCXX_STANDARD 17)\n\n# Build the app executable\nadd_executable(MacClockApp\n    main.mm\n)\n\n# Link the Cocoa framework for macOS GUI apps\ntarget_link_libraries(MacClockApp\n    \"-framework Cocoa\"\n)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u7de8\u8b6f\u8207\u57f7\u884c\"><strong>\u7de8\u8b6f\u8207\u57f7\u884c<\/strong><\/h2>\n\n\n\n<p><strong>\u6253\u958b\u547d\u4ee4\u9762\u677f<\/strong><\/p>\n\n\n\n<p>\u6309\u4e0b&nbsp;<code>Cmd + Shift + P<\/code>\uff08Windows\/Linux \u662f&nbsp;<code>Ctrl + Shift + P<\/code>\uff09\uff0c\u8f38\u5165\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">CMake: Build<\/code><\/pre>\n\n\n\n<p>\u7136\u5f8c\u6309\u4e0b Enter\uff0cCMake \u5c31\u6703\u81ea\u52d5\u5e6b\u4f60\u7522\u751f&nbsp;<code>build\/<\/code>&nbsp;\u8cc7\u6599\u593e\uff0c\u4e26\u5b8c\u6210\u7de8\u8b6f\u6d41\u7a0b\u3002<\/p>\n\n\n\n<p><strong>\u57f7\u884c\u61c9\u7528\u7a0b\u5f0f\uff08macOS \u5c08\u7528\uff09<\/strong><\/p>\n\n\n\n<p>\u5728\u7d42\u7aef\u6a5f\u8f38\u5165\u4ee5\u4e0b\u6307\u4ee4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">.\/build\/MacClockApp<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u6700\u7d42\u6210\u679c\u756b\u9762\">\u6700\u7d42\u6210\u679c\u756b\u9762<\/h2>\n\n\n\n<p>\u7576\u4f60\u6210\u529f\u57f7\u884c&nbsp;<code>.\/build\/MacClockApp<\/code>\uff0c\u4f60\u61c9\u8a72\u6703\u770b\u5230\u4e00\u500b\u4e7e\u6de8\u7c21\u6f54\u7684\u8996\u7a97\uff0c\u88e1\u9762\u986f\u793a\u8457\u73fe\u5728\u7684\u6642\u9593\uff0c\u5927\u7d04\u9577\u9019\u6a23\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1422\" height=\"1140\" src=\"https:\/\/saludpcb.com\/zh\/wp-content\/uploads\/2025\/04\/Still-Using-Objective-C-in-2025-Build-a-Powerful-macOS-Clock-in-VSCode.jpg\" alt=\"\" class=\"wp-image-3524\" title=\"\" srcset=\"https:\/\/saludpcb.com\/zh\/wp-content\/uploads\/2025\/04\/Still-Using-Objective-C-in-2025-Build-a-Powerful-macOS-Clock-in-VSCode.jpg 1422w, https:\/\/saludpcb.com\/zh\/wp-content\/uploads\/2025\/04\/Still-Using-Objective-C-in-2025-Build-a-Powerful-macOS-Clock-in-VSCode-768x616.jpg 768w\" sizes=\"auto, (max-width: 1422px) 100vw, 1422px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u7d50\u8ad6\">\u7d50\u8ad6<\/h2>\n\n\n\n<p>\u5118\u7ba1\u73fe\u5728\u5f88\u591a\u65b0\u624b\u958b\u767c\u8005\u9078\u64c7 Swift \u6216\u5176\u4ed6\u73fe\u4ee3\u8a9e\u8a00\u4f86\u958b\u767c macOS \u548c iOS \u61c9\u7528\u7a0b\u5f0f\uff0c\u4f46&nbsp;<strong>Objective C \u4f9d\u7136\u662f\u4e00\u500b\u5f37\u5927\u4e14\u4e0d\u53ef\u5ffd\u8996\u7684\u5de5\u5177<\/strong>\u3002\u900f\u904e\u9019\u7bc7\u6587\u7ae0\uff0c\u4f60\u4e0d\u50c5\u5b78\u6703\u4e86\u5982\u4f55\u4f7f\u7528&nbsp;<strong>VSCode<\/strong>&nbsp;\u548c&nbsp;<strong>CMake<\/strong>&nbsp;\u4f86\u958b\u767c macOS \u61c9\u7528\uff0c\u9084\u8b49\u660e\u4e86&nbsp;<strong>\u5373\u4fbf\u5728 2025 \u5e74\uff0cObjective C \u4ecd\u7136\u80fd\u5920\u70ba\u4f60\u5e36\u4f86\u5f37\u5927\u7684\u958b\u767c\u9ad4\u9a57<\/strong>\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator alignwide has-text-color has-palette-color-1-color has-alpha-channel-opacity has-palette-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7576\u8a31\u591a\u958b\u767c\u8005\u5c07\u76ee\u5149\u8f49\u5411 Swift \u548c\u73fe\u4ee3\u6846\u67b6\u6642\uff0cObjective-C \u5e38\u88ab\u8a8d\u70ba\u5df2\u8d70\u5165\u6b77\u53f2\u821e\u53f0\u3002\u4f46\u5728\u8a31\u591a\u5e95\u5c64 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3527,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[84],"tags":[27,21,44,9,11],"class_list":["post-3521","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c","tag-c","tag-ide","tag-programming-language","tag-python","tag-tutorial"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/posts\/3521","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/comments?post=3521"}],"version-history":[{"count":8,"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/posts\/3521\/revisions"}],"predecessor-version":[{"id":3533,"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/posts\/3521\/revisions\/3533"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/media\/3527"}],"wp:attachment":[{"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/media?parent=3521"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/categories?post=3521"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/saludpcb.com\/zh\/wp-json\/wp\/v2\/tags?post=3521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}